Android中如何在應用A中啟動或安裝應用B
看到別人做的遊戲攻略,想著自己的遊戲攻略也新增新的功能,即Android中如何在應用A中啟動或安裝應用B,就查了一些資料整理下來.
啟動或安裝相應的應用的方法:
Step1:判斷是否安裝目標應用。只要知道目標應用的安裝包名就可以通過判斷"/data/data/packagename"是否存在來實現。
/*** 判斷是否安裝目標應用
* @param packageName 目標應用安裝後的包名
* @return 是否已安裝目標應用
* @author zuolongsnail
*/
private boolean isInstallByread(String packageName) {
return new File("/data/data/" + packageName).exists();
}
Step2:目標應用已安裝則啟動,否則先安裝。
/**
* 先判斷是否安裝,已安裝則啟動目標應用程式,否則先安裝
* @param packageName 目標應用安裝後的包名
* @param appPath 目標應用apk安裝檔案所在的路徑
* @author zuolongsnail
*/
private void launchApp(String packageName, String appPath) {
// 啟動目標應用
if (isInstallByread(packageName)) {
// 獲取目標應用安裝包的Intent
Intent intent = getPackageManager().getLaunchIntentForPackage(
packageName);
startActivity(intent);
}
// 安裝目標應用
else {
Intent intent = new Intent();
// 設定目標應用安裝包路徑
intent.setDataAndType(Uri.fromFile(new File(appPath)),
"application/vnd.android.package-archive");
startActivity(intent);
}
}
判斷應用是否安裝或者是否為最新版本
在我們安裝應用的時候有時需要檢查應用是否安裝,未安裝則安裝,舊版本則覆蓋安裝。
/** 判斷是否安裝或覆蓋安裝的型別*/private static final int NOTINSTALL = 0; // 未安裝
private static final int INSTALLED = 1; // 已安裝且為新版本
private static final int OLDVERSION = 2; // 已安裝但為舊版本
/**
* 判斷應用是否安裝或者是否為最新版本
* @param packageName 目標應用安裝後的包名
* @param versionCode 指定的應用版本號
* @return 安裝的型別
* @author zuolongsnail
*/
private int isInstallByread(String packageName, int versionCode){
// 判斷是否安裝
if(new File("/data/data/" + packageName).exists()){
// 獲取系統中安裝的所有應用包名集合
List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);
for(int i=0;i<packages.size();i++){
PackageInfo packageInfo = packages.get(i);
// 找出指定的應用
if(packageName.equals(packageInfo.packageName)){
if(packageInfo.versionCode >= versionCode){
return INSTALLED;
}else{
return OLDVERSION;
}
}
}
}
return NOTINSTALL;
}
上面程式中的versionCode是在Manifest.xml檔案中的Manifest標籤中配置的,表示應用的版本號。
相關文章
- 如何在 Android 專案中應用 OpenCV?AndroidOpenCV
- Android 應用啟動流程Android
- CrossOver for Mac(Mac安裝Windows應用)23.6中文啟用版ROSMacWindows
- Android應用啟動流程分析Android
- [譯] 在 Android Instant App(安卓即時應用程式)中啟用 ProGuard (混淆)AndroidAPP安卓
- 如何在 Linux 上安裝應用程式Linux
- win10應用商店安裝應用在哪兒啟動_Win10應用商店應用開機啟動的方法Win10
- Android App應用啟動流程(一)AndroidAPP
- Android 裝逼技術之暗碼啟動應用Android
- wsl 中啟動 Windows 的 *.exe 應用Windows
- CrossOver for Mac(Mac安裝Windows應用) v23.5中文啟用版ROSMacWindows
- 免root解除安裝Android預裝應用Android
- 教你如何在快應用中跳轉到Android的appAndroidAPP
- 如何在Flask中整合Dash應用Flask
- Android O 讓安裝應用更安全Android
- 如何在移動應用中實現AI畫圖?AI
- 如何在Spring Boot應用程式中啟用GZIP壓縮? | 前端後端Spring Boot前端後端
- Android原始碼(二)應用程式啟動Android原始碼
- 濫用Accessibility service自動安裝應用
- win10 應用商店解除安裝瞭如何在安裝 win10 應用商店重灌方法Win10
- 如何在Chrome OS上安裝Linux應用程式ChromeLinux
- 怎樣解除安裝Chromebook 中的應用程式Chrome
- 探究 lua 在 Android 中的應用Android
- Android 應用啟動那些事兒,Application? Context?AndroidAPPContext
- 如何在程式碼中應用設計模式設計模式
- 如何在直播應用中實現多人KTV?
- 在你的 Swift 應用中建立或修改 URLSwift
- Android應用關閉,重啟Android
- Android中mmap原理及應用簡析Android
- Android應用優化之冷啟動優化Android優化
- 使用Docker安裝應用Docker
- Flowable UI應用安裝UI
- TechTool Pro要求在應用程式啟動時安裝助手工具
- 聊聊如何在Java應用中傳送簡訊Java
- 說說如何在Vue專案中應用TypeScript?VueTypeScript
- 如何在 Deno 應用程式中呼叫 Rust 函式Rust函式
- 如何在macOS中透過應用程式視窗浮動註釋Mac
- win10應用商店應用無法安裝怎麼解決_win10應用商店應用安裝沒反應處理方法Win10
- flutter 應用啟動流程Flutter