Android 7.0 出現 ”FileUriExposedException“ 和 ”解析包出現錯誤“ 異常的解決辦法


問題1 :android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/com.xxx.xxx.xxx.release/files/Download/2017120600.apk exposed beyond app through Intent.getData()

問題2 : 已經做了 Android 7.0 的 FileProvider 的適配,但是在應用內下載升級的時候提示 ”解析包出現問題“ .

  • 以上兩個問題,都是 Android 7.0 適配的問題。

    • 問題1 : 沒有做 Android 7.0 的適配,做了適配就沒有這個錯誤了
    • 問題2 : 在適配的時候,XML 文件中的 PATHS 寫的不正確。造成獲取到的 Uri 是錯誤的,因為提示解析包出現問題。只要正確的路徑就沒有問題。
  • FileProvider 繼承 ContentProvider。肯定是以 conent://com.xxx.xxx/ 開頭的, 其中 com.xxx.xxx 是應用的包名。所以使用 FileProvider 與使用 ContentProvider 一樣的。

  • 注意點:注意路徑,在 XML 的 PATHS 中寫入了路徑,每次會把這些路徑讀取到內存,然后使用 FileProvider 的時候會對傳入的 file 做路徑的匹配,匹配成功了,就可以正確的使用文件了。匹配不成功,會出現異常。所以在 XML 的 PATH 的時候注意根據自己所在文件的路徑填寫正確。以下列表是不同目錄的 PATH:

使用中注意在 XML 文件中的路徑的填寫,填寫錯誤的話,會無法訪問到該路徑。

  • files-path : Context.getFilesDir().
  • cache-path : getCacheDir().
  • external-path : Environment.getExternalStorageDirectory().
  • external-files-path : Context#getExternalFilesDir(String) Context.getExternalFilesDir(null).
  • external-cache-path : Context.getExternalCacheDir().

參考:http://blog.csdn.net/yy1300326388/article/details/52787853
FileProvider : https://developer.android.com/reference/android/support/v4/content/FileProvider.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM