我有一個應用程序,其中設置了一個ImageView,並且可以單擊該應用程序以在庫中打開。共享存儲在內部存儲器中的圖像
默認情況下,我用下面的代碼從外部存儲器獲取文件目錄來存儲我的JPEG文件:
File picsDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"MyCameraApp");
但是!假設外部存儲沒有安裝或根本不存在(Galaxy Nexus),這不起作用。所以我寫了一個if語句,並獲得內部緩存目錄作爲回退。
String state = Environment.getExternalStorageState()
if(Environment.MEDIA_MOUNTED.equals(state)){
File picsDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"MyCameraApp");
}else{
context.getCacheDir();
}
的圖像顯示了罰款,在ImageView的,但是當我的意圖啓動不來通過。
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(imgFile), "image/jpeg");
startActivity(intent);
畫廊獲取加載,但顯示黑屏。據推測,因爲畫廊無法訪問我的應用程序的緩存目錄中的文件。
作爲替代方案,我嘗試使用,使用MediaStore.Images.Media.INTERNAL_CONTENT_URI
媒體內容提供商,但這種努力inser圖像時會導致錯誤:
java.lang.UnsupportedOperationException: Writing to internal storage is not supported.
我該怎麼辦?
或許我可以嘗試的意圖沿着封裝位圖正好解決了你的問題?像'intent.putExtra(「BitmapImage」,位圖);'。我的圖像通常約爲5MB。 – Maarten
您可以將圖像存儲在應用程序的私人存儲空間中,並授予一般READ ONLY訪問權限,但許多應用程序(包括某些Google內置插件)不會檢查在將路徑交給他們時是否可以訪問這些應用程序,假定它們不能和失敗,即使擁有的應用程序實際上已授予全局讀取訪問權限。 –