Android 7.0適配 打開文件和分享文件

嗯,我就閒來無事想說一句,我是可愛的分割線(●’◡’●)。

7.0的禁止不安全路徑被外部訪問。其中典型例子就是拍照。所以我以爲分享圖片也是需要適配,實驗得知並不是。分享走的是系統的,所以不會有錯誤,如果你是打開文件的話,那麼久需要適配content URL了。

可是6.xx之後要動態申請權限,所以如果是對文件會發生讀寫操作的話需要把,申請讀寫權限意圖說明。也就是 addFlags。

1.Intent.FLAG_GRANT_WRITE_URI_PERMISSION content URL 寫入權限
2.Intent.FLAG_GRANT_READ_URI_PERMISSION content URL 讀取權限

一:打開pdf文件的代碼
因爲要適配7.0以上,所以介紹下如何誰配content URL。
這裏寫圖片描述

這裏寫圖片描述

以下是代碼使用,

                Intent intent = new Intent("android.intent.action.VIEW");
                intent.addCategory("android.intent.category.DEFAULT");
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                Uri uri;
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                //data是file類型,忘了複製過來
                    uri = FileProvider.getUriForFile(mActivity, "com.cango.palmcartreasure.fileprovider", data);
                } else {
                    uri=Uri.fromFile(data);
                }
                //pdf文件要被讀取所以加入讀取權限
                intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                intent.setDataAndType(uri, "application/pdf");
                try {
                    startActivity(intent);
                } catch (Exception e) {
                    e.printStackTrace();
                }

在start的時候,最好加入try——catch

二:分享pdf文件
不截圖了,使用方法和以前沒區別,走系統的所以不會發生異常處理。具體原因自己百度,反正我不知道,知道的告訴我下,告訴我我也不感激你。

                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_SEND);
                intent.addCategory("android.intent.category.DEFAULT");
                Uri pdfUri;
                pdfUri = Uri.fromFile(data);
                intent.putExtra(Intent.EXTRA_STREAM, pdfUri);
                intent.setType("application/pdf");

                try {
                    mContext.startActivity(Intent.createChooser(intent, data.getName()));
                } catch (Exception e) {
                    e.printStackTrace();
                }

講完了,(●’◡’●)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章