1.添加在在需要判斷的地方頁(yè)面,任意位置
/**
? ? * 判斷應(yīng)用市場(chǎng)是否存在的方法
? ? *
? ? * @param context
? ? * @param packageName
? ? *
? ? * 主流應(yīng)用商店對(duì)應(yīng)的包名
? ? * com.android.vending? ? -----Google Play
? ? * com.tencent.android.qqdownloader? ? -----應(yīng)用寶
? ? * com.qihoo.appstore? ? -----360手機(jī)助手
? ? * com.baidu.appsearch? ? -----百度手機(jī)助
? ? * com.xiaomi.market? ? -----小米應(yīng)用商店
? ? * com.wandoujia.phoenix2? ? -----豌豆莢
? ? * com.huawei.appmarket? ? -----華為應(yīng)用市場(chǎng)
? ? * com.taobao.appcenter? ? -----淘寶手機(jī)助手
? ? * com.hiapk.marketpho? ? -----安卓市場(chǎng)
? ? * cn.goapk.market? ? ? ? -----安智市場(chǎng)
? ? */
? ? public static boolean isAvilible(Context context, String packageName) {
? ? ? ? // 獲取packagemanager
? ? ? ? final PackageManager packageManager = context.getPackageManager();
? ? ? ? // 獲取所有已安裝程序的包信息
? ? ? ? List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
? ? ? ? // 用于存儲(chǔ)所有已安裝程序的包名
? ? ? ? List<String> pName = new ArrayList<String>();
? ? ? ? // 從pinfo中將包名字取出
? ? ? ? if (pinfo != null) {
? ? ? ? ? ? for (int i = 0; i < pinfo.size(); i++) {
? ? ? ? ? ? ? ? String pf = pinfo.get(i).packageName;
? ? ? ? ? ? ? ? pName.add(pf);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? // 判斷pName中是否有目標(biāo)程序的包名,有true,沒(méi)有false
? ? ? ? return pName.contains(packageName);
? ? }
2.得到版本號(hào)
public static StringversionName;
PackageManager manager = getPackageManager();
try {
// 得到版本號(hào)
? ? PackageInfo info = manager.getPackageInfo(this.getPackageName(),0);
versionName = info.versionName;
}catch (NameNotFoundException e) {
e.printStackTrace();
}
3.和后臺(tái)傳過(guò)來(lái)的版本號(hào)進(jìn)行對(duì)比
if (!FragmentAty.versionName.equals(version)) {
//不一樣
appUpdate();
}
4.判斷是否有包名
private String a="com.yizuwang.app.pho.ui";
private void appUpdate() {
if(isAvilible(this,a)){//判斷應(yīng)用市場(chǎng)是否有包名
launchAppDetail(this,a,"");
}else{//沒(méi)有,用瀏覽器打開(kāi)地址進(jìn)行下載
?Uri uri = Uri.parse(url);
? Intent intent =new Intent(Intent.ACTION_VIEW, uri);
? startActivity(intent);
? ? }
Toast.makeText(this,"立即更新",Toast.LENGTH_LONG).show();
}
5.跳轉(zhuǎn)更新
/**
* 啟動(dòng)到應(yīng)用商店app詳情界面
*
* @param appPkg? ? 目標(biāo)App的包名
* @param marketPkg 應(yīng)用商店包名 ,如果為""則由系統(tǒng)彈出應(yīng)用商店列表供用戶選擇,否則調(diào)轉(zhuǎn)到目標(biāo)市場(chǎng)的應(yīng)用詳情界面
*/
public static void launchAppDetail(Context mContext, String appPkg, String marketPkg) {
try {
if (TextUtils.isEmpty(appPkg)) {
return;
}
Uri uri = Uri.parse("market://details?id=" + appPkg);
Intent intent =new Intent(Intent.ACTION_VIEW, uri);
if (!TextUtils.isEmpty(marketPkg)) {
intent.setPackage(marketPkg);
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
}catch (Exception e) {
e.printStackTrace();
}
}
4.未安裝市場(chǎng)應(yīng)用,那么根據(jù)后臺(tái)返回的地址,用瀏覽器打開(kāi)地址進(jìn)行下載
Uri uri = Uri.parse(url);
? Intent intent =new Intent(Intent.ACTION_VIEW, uri);
? startActivity(intent);