嗯,我就閒來無事想說一句,我是可愛的分割線(●’◡’●)。
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();
}
講完了,(●’◡’●)。