91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android 7.0行為變更 FileUriExposedException解決方法

發布時間:2020-09-07 14:19:00 來源:腳本之家 閱讀:181 作者:lqh 欄目:移動開發

Android 7.0行為變更 FileUriExposedException解決方法

當我們開發關于【在應用間共享文件】相關功能的時候,在Android 7.0上經常會報出此運行時異常,那么Android 7.0以下沒問題的代碼,為什么跑到Android 7.0+的設備上運行就出問題了呢?,這主要來自于Android 7.0的一項【行為變更】!

對于面向 Android 7.0 的應用,Android 框架執行的 StrictMode API 政策禁止在您的應用外部公開 file:// URI。如果一項包含文件 URI 的 intent 離開您的應用,則應用出現故障,并出現 FileUriExposedException 異常。如圖:

Android 7.0行為變更 FileUriExposedException解決方法

要在應用間共享文件,您應發送一項 content:// URI,并授予 URI 臨時訪問權限。進行此授權的最簡單方式是使用 FileProvider 類。

FileProvider 類的用法:

第一步:為您的應用定義一個FileProvider清單條目,這個條目可以聲明一個xml文件,這個xml文件用來指定應用程序可以共享的目錄。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.myapp">
  <application
    ...>
    <provider
      android:name="android.support.v4.content.FileProvider"
      android:authorities="com.example.myapp.fileprovider"
      android:grantUriPermissions="true"
      android:exported="false">
      <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/filepaths" />
    </provider>
    ...
  </application>
</manifest>

在這段代碼中, android:authorities 屬性應該是唯一的,推薦使用【應用包名+fileprovider】,推薦這樣寫

android:authorities=”${applicationId}.file_provider”,可以自動找到應用包名。

meta-data標簽指定了一個路徑,這個路徑使用resource指定的xml文件來指明是那個路徑:

xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<paths>
  <external-files-path name="bga_upgrade_apk" path="upgrade_apk" />
</paths>

Uri的獲取方式也要根據當前Android系統版本區分對待:

  File dir = getExternalFilesDir("user_icon");
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
      icon_path = FileProvider.getUriForFile(getApplicationContext(),
          "com.mqt.android_headicon_cut.file_provider", new File(dir, TEMP_FILE_NAME));
    } else {
      icon_path = Uri.fromFile(new File(dir, TEMP_FILE_NAME));
    }

這樣問題就解決了。貼上一個安裝apk適配7.0的例子:https://www.jb51.net/article/113307.htm

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛扎县| 盘锦市| 五河县| 防城港市| 仁怀市| 息烽县| 华池县| 聂拉木县| 平阳县| 上虞市| 留坝县| 蛟河市| 荥经县| 崇礼县| 玉山县| 酒泉市| 玉树县| 三都| 丹东市| 萍乡市| 汉寿县| 钟祥市| 琼海市| 冕宁县| 马山县| 林州市| 新密市| 抚州市| 赤城县| 永善县| 徐闻县| 阿荣旗| 车险| 格尔木市| 揭东县| 赞皇县| 耒阳市| 大同县| 从化市| 手游| 公主岭市|