Android開發(fā)跳轉(zhuǎn)應(yīng)用市場進(jìn)行版本更新功能實(shí)現(xiàn)
現(xiàn)在版本更新有兩種處理方式:
跳轉(zhuǎn)到App應(yīng)用市場,通過應(yīng)用市場下載更新安裝。
在App內(nèi)進(jìn)行Apk下載,下載完成后更新安裝。
實(shí)現(xiàn)思路:
- 請(qǐng)求后臺(tái)數(shù)據(jù),根據(jù)返回版本號(hào)對(duì)比判斷應(yīng)用是否需要進(jìn)行更新操作。
- 若不需要,跳轉(zhuǎn)到登錄或應(yīng)用主界面,若需要進(jìn)行彈框,讓用戶選擇是否進(jìn)行更新操作。
- 若用戶選擇取消更新,則跳轉(zhuǎn)到登錄或應(yīng)用主界面
- 若用戶選擇更新,則判斷手機(jī)內(nèi)是否安裝需要進(jìn)入的應(yīng)用市場APP。
- 如果已安裝,那么根據(jù)包名直接進(jìn)入應(yīng)用市場的詳情頁面下載apk.
- 如果未安裝,那么根據(jù)后臺(tái)返回的地址,用瀏覽器打開進(jìn)行下載。
關(guān)鍵步驟代碼說明:
1.判斷用戶手機(jī)內(nèi)是否安裝需要進(jìn)入的應(yīng)用市場APP
/**
* 判斷應(yī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)用市場
* com.taobao.appcenter -----淘寶手機(jī)助手
* com.hiapk.marketpho -----安卓市場
* cn.goapk.market -----安智市場
*/
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,沒有false
return pName.contains(packageName);
}
2.根據(jù)包名直接進(jìn)入應(yīng)用市場的詳情頁面下載apk
/**
* 啟動(dòng)到應(yīng)用商店app詳情界面
*
* @param appPkg 目標(biāo)App的包名
* @param marketPkg 應(yīng)用商店包名 ,如果為""則由系統(tǒng)彈出應(yīng)用商店列表供用戶選擇,否則調(diào)轉(zhuǎn)到目標(biāo)市場的應(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();
}
}
3.未安裝市場應(yīng)用,那么根據(jù)后臺(tái)返回的地址,用瀏覽器打開地址進(jìn)行下載
Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
以上就是Android實(shí)現(xiàn)跳轉(zhuǎn)到應(yīng)用市場進(jìn)行版本更新功能的詳細(xì)內(nèi)容,更多關(guān)于Android跳轉(zhuǎn)應(yīng)用市場版本更新的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android Studio 多層級(jí) Module 對(duì) aar 引用問題解決方法
這篇文章主要介紹了Android Studio 多層級(jí) Module 對(duì) aar 引用問題的解決方法,需要的朋友參考下2017-12-12
Android項(xiàng)目中實(shí)體類entity的作用詳解
這篇文章主要介紹了Android項(xiàng)目中實(shí)體類entity的作用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Android用于校驗(yàn)集合參數(shù)的小封裝示例
本篇文章主要介紹了Android-用于校驗(yàn)集合參數(shù)的小封裝示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10
Android應(yīng)用圖標(biāo)在狀態(tài)欄上顯示實(shí)現(xiàn)原理
Android應(yīng)用圖標(biāo)在狀態(tài)欄上顯示,以及顯示不同的圖標(biāo),其實(shí)很研究完后,才發(fā)現(xiàn),很簡單,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈2013-06-06
Android編程實(shí)現(xiàn)Dialog窗體監(jiān)聽的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)Dialog窗體監(jiān)聽的方法,結(jié)合實(shí)例形式分析了Android針對(duì)Dialog對(duì)話框窗體事件監(jiān)聽與響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下2017-03-03
Android 系統(tǒng)服務(wù)TelecomService啟動(dòng)過程原理分析
這篇文章主要介紹了Android 系統(tǒng)服務(wù)TelecomService啟動(dòng)過程原理分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Android數(shù)據(jù)轉(zhuǎn)移之Launcher導(dǎo)出數(shù)據(jù)庫給另一臺(tái)機(jī)器加載
這篇文章主要介紹了Android系統(tǒng)中Launcher導(dǎo)出數(shù)據(jù)庫給另一臺(tái)機(jī)器加載的詳細(xì)流程,數(shù)據(jù)轉(zhuǎn)移是少見但早晚要用到的功能,感興趣的朋友快來提前掌握吧2021-11-11
Android 從底部彈出Dialog(橫向滿屏)的實(shí)例代碼
在android開發(fā)中經(jīng)常會(huì)遇到底部彈出框的功能,今天小編抽時(shí)間給大家整理一個(gè)底部彈出橫向滿屏的dialog,需要的朋友參考下2016-11-11
Android編程自定義AlertDialog樣式的方法詳解
這篇文章主要介紹了Android編程自定義AlertDialog樣式的方法,結(jié)合實(shí)例形式詳細(xì)分析了Android自定義AlertDialog樣式的具體布局與功能實(shí)現(xiàn)相關(guān)操作技巧,需要的朋友可以參考下2018-02-02

