国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 8.0升級不跳轉應用安裝頁面的解決方法

2019-10-22 18:09:51
字體:
來源:轉載
供稿:網友

最近開發遇到了個問題,app升級的時候,其他手機都能正常升級,下載完安裝包,跳到安裝頁面進行新版本的安裝。但卻有用戶反映,華為P10和華為Mate 9升級時,怎么也無法跳轉到安裝頁面。起初我以為是華為手機自身系統的問題(因為手上的華為測試機都是正常的),還特地對比了幾種配置的華為手機,最后發現,是Android 8.0系統版本的鍋,不是手機的問題。

2017年8月22日,Google發布了Android 8.0的正式版,其正式名稱為:Android Oreo(奧利奧),Android 8.0強化了權限管理,變得更加安全。在Android 8.0以前,所有的未知來源應用都可以被安裝,或者會彈窗給用戶一個提示,如此設計雖然方便,但是若被引誘安裝了惡意軟件,安裝"未知來源"的應用有可能會對手機系統帶來潛在的危害;

而在Android 8.0的系統中,**未知來源應用權限**的開關被移除掉了,取而代之的是未知來源應用的管理列表,如果你想要安裝某個被自己所信任的開發者的app,則需要在每一次都手動授權"安裝未知應用"的許可。設置頁面如下圖:(在華為Android 8.0中,打開該設置頁面:設置列表—>安全與隱私—>更多安全設置—>安裝未知應用)

Android,升級,安裝頁面

*如圖所示*,若某個應用選擇的是“不允許”,那么假設app手動升級的時候,就無法成功跳轉到安裝頁面進行正常的App升級流程了,此時需要手動去授權才行,但是很多用戶并不知道需要這么設置。
廢話說了一大堆,解決其實很簡單。

1.在AndroidManifest.xml文件中,添加REQUEST_INSTALL_PACKAGES權限

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> 

2.在打開安裝包的代碼中添加**兼容Android 8.0**的代碼。

/**   * 打開安裝包   *   * @param mContext   * @param fileUri   */   public void openAPKFile(Activity mContext, String fileUri) {     DataEmbeddingUtil.dataEmbeddingAPPUpdate(fileUri);     // 核心是下面幾句代碼     if (null != fileUri) {       try {         Intent intent = new Intent(Intent.ACTION_VIEW);         File apkFile = new File(fileUri);         //兼容7.0         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {           intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);           Uri contentUri = FileProvider.getUriForFile(mContext, mContext.getPackageName() + ".fileProvider", apkFile);           intent.setDataAndType(contentUri, "application/vnd.android.package-archive");           //兼容8.0           if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {             boolean hasInstallPermission = mContext.getPackageManager().canRequestPackageInstalls();             if (!hasInstallPermission) {               ToastUtil.makeText(MyApplication.getContext(), MyApplication.getContext().getString(R.string.string_install_unknow_apk_note), false);               startInstallPermissionSettingActivity();               return;             }           }         } else {           intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");           intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);         }         if (mContext.getPackageManager().queryIntentActivities(intent, 0).size() > 0) {           mContext.startActivity(intent);         }       } catch (Throwable e) {         e.printStackTrace();         DataEmbeddingUtil.dataEmbeddingAPPUpdate(e.toString());         CommonUtils.makeEventToast(MyApplication.getContext(), MyApplication.getContext().getString(R.string.download_hint), false);       }     }   }     /**   * 跳轉到設置-允許安裝未知來源-頁面   */   @RequiresApi(api = Build.VERSION_CODES.O)   private void startInstallPermissionSettingActivity() {     //注意這個是8.0新API     Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);     mContext.startActivity(intent);   } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 余干县| 桦南县| 二手房| 新乡市| 大悟县| 高青县| 马山县| 安图县| 巴东县| 惠州市| 溧阳市| 达拉特旗| 宜川县| 共和县| 古浪县| 蒙山县| 邻水| 视频| 贺州市| 横峰县| 亚东县| 潼南县| 方正县| 安丘市| 平果县| 成武县| 临海市| 进贤县| 宁晋县| 龙井市| 荆门市| 惠水县| 滨海县| 金秀| 荃湾区| 寿光市| 安阳市| 嵊泗县| 金平| 新乡县| 漠河县|