1. 程式人生 > >安卓7.0手機上遇到的app升級問題終極解決方案

安卓7.0手機上遇到的app升級問題終極解決方案

 相容Android 7.0 App升級

一、在AndroidManifest.xml清單檔案中註冊Provider

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="com.cuileikun.androidbase.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"

        android:resource="@xml/cui_file_paths"
        tools:replace="android:resource"/>
</provider>

authorities: 常用命名為包名+fileprovider
exported要求必須為false,為true會報安全異常
grantUriPermissions表示URI臨時訪問許可權,true為需要臨時訪問許可權

resource指當前元件引用res資料夾中qk_file_paths檔案,這個檔名可以隨便寫,只要在res資料夾中有這個檔案即可。

在res資料夾中新建xml資料夾,再新建cui_file_paths.xml檔案,內容如下
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <paths>

        <external-path
            name="files_root"
            path="Android/data/com.cuileikun.androidbase/" />
        <external-path
            name="external_storage_root"
            path="." />
        <!-- yan  notice:  do not  edit     -->
        <root-path path="" name="camera_photos" />

    </paths>
</resources>

path填上Android/data/包名

二、安裝Apk時注意相容高低版本

Intent intent = new Intent(Intent.ACTION_VIEW);
//判斷是否是AndroidN以及更高的版本
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
         intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
         Uri contentUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".fileprovider", apkFile);
         intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
      } else {
         intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      }
      context.startActivity(intent);

主要是注意getUriForFile方法中的引數,第二個引數為BuildConfig.APPLICATION_ID + “.fileprovider”

即包名+.fileprovider,這個和AndroidManifest中的Provider中的屬性authorities一致

參考連結:

http://www.2cto.com/kf/201704/622561.html

相關推薦

專案實戰之APP版本升級更新,適配7.0

前言 APP的版本升級主要分為兩種方式: 1.應用市場升級 2.應用內升級 而應用內升級的方式是目前大多數APP採用的升級更新方式。 應用內升級的模式 按照不同的業務需求又可以分為兩種: 1,強制性更新 如果APP有更新,那麼則彈出更新提示對話方塊,並且

7.0手機上遇到的app升級問題終極解決方案

 相容Android 7.0 App升級 一、在AndroidManifest.xml清單檔案中註冊Provider <provider    android:name="android.support.v4.content.FileProvider"    andr

7.0拍照遇到 Uri暴露錯誤

meta 技術 () code hid con 目錄 view file 最近,項目又做到,調用攝像頭拍照獲取圖片這個功能。 用以前的代碼直接用,發現在Android7.0上使用時會出現問題。 Android6.0之後,動態申請權限已成常態。 調用攝像頭拍照獲取圖片這個功能

關於7.0及以上的Https請求抓包問題android:networkSecurityConfig

Android 7.0(API 級別 24)及更高版本預設只承認系統CA,所以預設是安全的,不需要配置。如果想要系統承認使用者自己安裝的CA,則修改配置(比如除錯時會需要抓包)。 面向 Android 6.0(API 級別 23)及更低版本應用的預設配置如下所示,這段配置的意思是,承認系

專案實戰之:7.0優化下的全域性網路連線狀態監聽

須知:Android7.0起網路變化監聽隱式廣播被關閉 在 Android 7.0 版本中除了提供諸多多視窗支援、活動通知、後臺優化、訊息傳遞服務和Vulkan 等新特性和功能外,還對系統和 API 行為做出了各種變更,其中最重要的一點:Android7.0為了進行後臺的優化刪除了三

7.0以上作業系統長按桌面logo建立快捷方式

本文已授權微信公眾號:鴻洋(hongyangAndroid)在微信公眾號平臺原創首發。 就在前幾天的一個晚上, Google召開了它的秋季釋出會,

獲取渠道名渠道id Android獲取裝置唯一標識的終極解決方法,防止7.0時崩潰問題

一,先說獲取渠道名(這裡以友盟為例) /* * 4.5.1新加渠道名欄位,用來傳給後臺去統計各個渠道下載量 * */ public static String getSource() { //獲取渠道名 Strin

7.0 WebView 載入網頁空白解決辦法

mainWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(W

popwindow 在7.0上顯示位置錯誤以及在6.0下點選外部不能消失的情況解析

popwindow在日常使用的過程中頻率很高 ,一般用起來也是得心應手,但是也是有很多坑存在的,在這個版本的迭代中就遇到了一些問題,解決起來很簡單,但是以後開發中肯定要注意的 popwindow 出現的View not attached to window

PopupWindow在7.07.1系統上位置顯示異常

做專案時發現Popupwindow在7.0及以上的裝置上顯示位置異常,6.0上及以下卻沒有問題: 如下圖所示 解決方式:重寫Popupwindow的showasdrop方法: /** * 建立時間: 2017/12/5. * 創 建 人:

android apk安裝包修改了之後在7.0系統上無法安裝的解決辦法

我們在開發app的時候,往往在打包完之後還要進行分發。所以需要在安裝包中寫入一定的檔案。比如渠道或者動態新增啟動時預載入的資訊。但是現安卓開發一般用的是Android Studio ,而且Studio 版本一般都是2.2以上。問題的關鍵就是在這裡,在Studio 2.2以後

7.0上在狀態列上加電池百分比

     》》》》》》     安卓7.0上的statusbar上是預設不帶電池百分比的。需要我們加上去。有兩個方法,先寫第一個方法    1. 在frameworks/base/packages/SystemUI/res/layout/system_icons.xml

7.0開啟相機(許可權與內容提供器)

本文大部分來自第二行程式碼,只是部分許可權問題改動與說明 其中主要問題就是安卓6.0許可權問題和7.0url問題。 首先需要設定許可權 <!-- 攝像頭 --> <uses-permission android:name="a

華為基於7.0的Emui5.0實戰技術開放日-成都、北京、廣州

華為釋出了基於安卓7.0的EMUI5.0,通過智慧學習系統優化安卓資源排程管理,可謂大顯身手。EMUI5.0是一款從UI設計到互動,再到效能各方面都有極大提升的系統。華為將在成都、北京、廣州舉辦三場EMUI5.0技術開放日,與資深極客、技術專家和花粉針對EMUI

解決7.0系統裁剪圖片出錯問題

        Android7.0中為了提高私有檔案的安全性,對file:// Uri 型別的Uri做出了限制,導致一些APP的功能無法正常使用。前幾天的一個頭像裁剪問題被提上了日程,開始只是修改了拍照的Uri,忘記了還要裁剪,因為直接使用的系統裁剪導致裁剪出了問題。下面

小米Note標配版 雙網通刷原生7.0教程(詳細)

小米note手機用了一段時間後,開始儲存不夠用了,於是想重新刷一次機,順便清洗一下記憶體。 首先備份好手機的資料,由於我手機玩遊戲建立了很多qq的小號,所以我先把這些小號備份一下,然後就是微信備份!把資料備份到電腦端。 然後開始正式工作: 1.下載ROM包,我下載的是秋大

解決7.0拍照,相簿選擇崩潰的問題(包括壓縮圖片在內)

在今天,專案的功能開發的告一段落了,回顧之前遇到的難題,覺得有必要在部落格中記錄一下,也方便下次自己能快速解決問題,同時,也能給遇到同樣問題的人一個參考。 這問題就是當用戶使用android 7.0系統的手機進行拍照的時候,崩潰的問題。崩潰的原因,網上有很多詳

Eclipse Logcat沒有輸出,主要集中在華為或者7.0版本以上的手機

最近給cocos2d-x搭建安卓開發環境的時候,匯入專案到eclipse中,在真機上執行專案時,logcat一直沒有輸出,換了低端點的手機可以輸出,後來發現好像安卓7.0以上的手機都沒輸出,target一直顯示unknow,各種重啟eclipse和adb,設定手

7.0許可權及預覽版問題

昨天一覺醒來,發現安卓7.0的首個開發者預覽版竟然釋出了,驚喜之餘立馬抓起Nexus5準備升級,結果立馬被迎頭了一盆冷水,支援的裝置只有Nexus6、Nexus 5X、Nexus 6P、Nexus

7.0報錯android.os.FileUriExposedException

最近在開發過程中遇到了這樣一個錯誤,android.os.FileUriExposedException: file:///storage/emulated/0/xxx/xxx.doc exposed beyond app through Intent.getD