我的應用程序允許用戶查看圖庫或其他位置中的某些選定圖像。我請求通過URI的圖像:重新啓動後圖庫中的圖像權限丟失
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, PickerFragment.PICK_PHOTO);
然後得到URI在onActivityResult(INT requestCode,INT resultCode爲,意圖數據),並有機會獲得這些圖像把它們放在我的應用程序的意見通過:
Uri imageUri= data.getData();
當應用程序完成後,我保存所有的URI在我的數據庫通過字符串:
String imageUriString = imageUri.toString();
saveToDB (imageUriString);
然而,當我重新啓動應用程序,並從我的DAT恢復所有的URI通過:
String imageUriString = restoreFromDB();
imageUri = Uri.parse (imageUriString);
該應用程序沒有權限的那些Uri的在Android 7.1中。 我通過訪問圖片:
ContentResolver cr = mContext.getContentResolver();
InputStream is = cr.openInputStream(imageUri);
BitmapFactory.decodeStream(is, null, o);
但收到此異常:
java.lang.SecurityException: Permission Denial: opening provider com.google.android.apps.photos.contentprovider.impl.MediaContentProvider from ProcessRecord
有一種優雅的和合法的方式來保持該權限? 我試圖閱讀關於權限的所有文檔,但感覺真的很困惑。
如果你讓我正確的學習方向,將不勝感激。
PS Uri的權限持續時,將圖像複製到應用程序內存是一種選擇,但我想避免這種情況。至少看看是否有可能。
PPS我已授予所有權限,例如相機和外部存儲器寫入和讀取。
檢查時圖像不存在此鏈接https://stackoverflow.com/questions/37409181/java-lang-securityexception-permission-denial-opening-provider – Anonymous
店字節組而不是uri.Uri失敗在畫廊。 – Anonymous
@匿名,存儲是一個選項,但不是理想的。在我的情況下,即使圖像存在於圖庫中,Uri也會失敗 – rommex