Android開發(fā)跳轉(zhuǎn)應(yīng)用市場(chǎng)進(jìn)行版本更新功能實(shí)現(xiàn)
現(xiàn)在版本更新有兩種處理方式:
跳轉(zhuǎn)到App應(yīng)用市場(chǎng),通過應(yīng)用市場(chǎ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)用市場(chǎng)APP。
- 如果已安裝,那么根據(jù)包名直接進(jìn)入應(yīng)用市場(chǎng)的詳情頁(yè)面下載apk.
- 如果未安裝,那么根據(jù)后臺(tái)返回的地址,用瀏覽器打開進(jìn)行下載。
關(guān)鍵步驟代碼說明:
1.判斷用戶手機(jī)內(nèi)是否安裝需要進(jìn)入的應(yīng)用市場(chǎng)APP
/** * 判斷應(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,沒有false return pName.contains(packageName); }
2.根據(jù)包名直接進(jìn)入應(yīng)用市場(chǎng)的詳情頁(yè)面下載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)市場(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(); } }
3.未安裝市場(chǎng)應(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)用市場(chǎng)進(jìn)行版本更新功能的詳細(xì)內(nèi)容,更多關(guān)于Android跳轉(zhuǎn)應(yīng)用市場(chǎng)版本更新的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用科大訊飛語(yǔ)音SDK實(shí)現(xiàn)文字在線合成語(yǔ)音
這篇文章主要介紹了使用科大訊飛語(yǔ)音SDK實(shí)現(xiàn)文字在線合成語(yǔ)音 的相關(guān)資料,需要的朋友可以參考下2015-12-12OpenHarmony實(shí)現(xiàn)屏幕亮度動(dòng)態(tài)調(diào)節(jié)方法詳解
大家在拿到dayu之后,都吐槽說,會(huì)經(jīng)常熄屏,不利于調(diào)試,那么有沒有一種辦法,可以讓app不熄屏呢,答案是有的,今天我們就來揭秘一下,如何控制屏幕亮度2022-11-11AndroidStudio Gradle基于友盟的多渠道打包方法
這篇文章主要介紹了AndroidStudio Gradle基于友盟的多渠道打包方法,需要的朋友可以參考下2017-09-09Android中使用TextView實(shí)現(xiàn)圖文混排的方法
向TextView或EditText中添加圖像比直接添加文本復(fù)雜一點(diǎn)點(diǎn),需要用到<img>標(biāo)簽。接下來通過本文給大家介紹Android中使用TextView實(shí)現(xiàn)圖文混排的方法,希望對(duì)大家有所幫助2016-02-02android時(shí)間選擇控件之TimePickerView使用方法詳解
這篇文章主要為大家詳細(xì)介紹了android時(shí)間選擇控件之TimePickerView的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09FragmentTabHost FrameLayout實(shí)現(xiàn)底部導(dǎo)航欄
這篇文章主要為大家詳細(xì)介紹了FragmentTabHost和FrameLayout實(shí)現(xiàn)底部導(dǎo)航欄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Android開發(fā)之背景動(dòng)畫簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了Android開發(fā)之背景動(dòng)畫簡(jiǎn)單實(shí)現(xiàn)方法,涉及Android背景動(dòng)畫簡(jiǎn)單設(shè)置與使用技巧,需要的朋友可以參考下2017-10-10一文搞懂Android RecyclerView點(diǎn)擊展開、折疊效果的實(shí)現(xiàn)代碼
雖然在日常開發(fā)中已經(jīng)多次接觸過RecycleView,但也只是用到其最基本的功能,并沒有深入研究其他內(nèi)容。接下來將抽出時(shí)間去了解RecycleView的相關(guān)內(nèi)容,這篇文章主要是介紹Android RecyclerView點(diǎn)擊展開、折疊效果的實(shí)現(xiàn)方式,一起看看吧2021-06-06