簡體   English   中英

MediaStore.Images.Media.insertImage在Samsung平板電腦上失敗

[英]MediaStore.Images.Media.insertImage fails on Samsung tablets

我的代碼在Samsung Galaxy平板電腦(例如SM-P601,Android 4.4.2)上崩潰。

崩潰的代碼是這一行:

String path = MediaStore.Images.Media.insertImage(context.getContentResolver(), null, "ShareImage", null);

另一個失敗的代碼只是在OnClick方法中:

Bitmap bm = Bitmap.createBitmap(128, 128, Bitmap.Config.ARGB_8888);
String path = MediaStore.Images.Media.insertImage(MainActivity.this.getContentResolver(), bm, "ShareImage", null);
Log.d("tag", path);

例外是:

08-07 12:20:41.703 14625-14849 / com.mypackage.testapp.testing E / MediaStore:無法插入圖像java.io.FileNotFoundException:android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java中沒有這樣的文件或目錄:146),位於android.content.ContentProviderProxy.openAssetFile(ContentProviderNative.java:611),位於android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:925),位於android.content.ContentResolver.openOutputStream(ContentResolver.java:672) .content.ContentResolver.openOutputStream(ContentResolver.java:648)在android.provider.MediaStore $ Images $ Media.insertImage(MediaStore.java:937)

  • 在這種情況下,我的上下文對象是傳遞給此方法的應用程序上下文。
  • 我已經添加了讀取和寫入外部存儲的所有權限
  • 同樣,它僅在特定的三星平板電腦上發生
  • 問題不在於位圖,如果我創建一個空的位圖,它將不起作用。
  • 在單擊按鈕時執行以下代碼
  • 應用程序不會崩潰,只有異常出現在日志中。

這個問題對我沒有幫助。

UPD。

幾秒鍾后,出現此異常:

08-07 12:56:13.038 1841-1852 /? E / DatabaseUtils:對包裹java.lang.NumberFormatException的寫入異常:無效的long:java.lang.Long.invalidLong(Long.java:124)處的java.lang.Long.parseLong(Long.java:341)處為“ null”在com.sec.android.gallery3d.provider.GallerySearchDatabase.setTableForTag(GallerySearchDatabase.java:137)的java.lang.Long.parseLong(Long.java:318)處com.sec.android.gallery3d.provider.GallerySearchDatabase.getImages (GallerySearchDatabase.java:559)在com.sec.android.gallery3d.provider.GallerySearchProvider.getFindoSuggest(GallerySearchProvider.java:107)在com.sec.android.gallery3d.provider.GallerySearchProvider.getFindoTagSuggest(GallerySearchProvider.java:111)在com.sec.android.gallery3d.provider.GallerySearchProvider.query(GallerySearchProvider.java:81)在android.content.ContentProvider.query(ContentProvider.java:857)在android.content.ContentProvider $ Transport.query(ContentProvider.java: 200),位於android.os.B上的android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112) dalvik.system.NativeStart.run上的inder.execTransact(Binder.java:404)(本機方法)

public static void fixMediaDir() {
    File sdcard = Environment.getExternalStorageDirectory();
    if (sdcard == null) { return; }
    File dcim = new File(sdcard, "DCIM");
    if (dcim == null) { return; }
    File camera = new File(dcim, "Camera");
    if (camera.exists()) { return; }
    camera.mkdir();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM