網(wǎng)站首頁 編程語言 正文
Android開發(fā)跳轉(zhuǎn)應(yīng)用市場進(jìn)行版本更新功能實(shí)現(xiàn)_Android
作者:ZH-黑夜 ? 更新時(shí)間: 2022-06-25 編程語言現(xiàn)在版本更新有兩種處理方式:
跳轉(zhuǎn)到App應(yīng)用市場,通過應(yīng)用市場下載更新安裝。
在App內(nèi)進(jìn)行Apk下載,下載完成后更新安裝。
實(shí)現(xiàn)思路:
- 請求后臺(tái)數(shù)據(jù),根據(jù)返回版本號(hào)對比判斷應(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)用商店對應(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);
原文鏈接:https://blog.csdn.net/qq_40945489/article/details/108975337?spm=1001.2014.3001.5502
相關(guān)推薦
- 2022-02-15 H5移動(dòng)端大轉(zhuǎn)盤抽獎(jiǎng)插件, 簡單、易用、無依賴
- 2022-07-18 C語言簡明講解歸并排序的應(yīng)用_C 語言
- 2022-04-20 Python設(shè)計(jì)模式中的結(jié)構(gòu)型適配器模式_python
- 2022-04-20 用Python實(shí)現(xiàn)插值算法_python
- 2022-08-15 python?time模塊時(shí)間戳?與?結(jié)構(gòu)化時(shí)間詳解_python
- 2022-12-10 C++如何將vector數(shù)字寫入到txt文件中_C 語言
- 2022-06-09 LVGL?PC模擬器安裝步驟詳解_安裝教程
- 2022-02-24 Go入門所踩過的坑:cannot find package "" in any of
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支