【发布时间】:2012-11-29 19:34:23
【问题描述】:
我的活动的某些功能中有一个代码:
ContentValues cv = new ContentValues();
cv.put(MediaStore.Images.Media.TITLE, "1354213408296.jpg");
ContentResolver contentResolver = getContentResolver();
Uri imageUri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, cv);
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
cameraIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(cameraIntent, 712984419/*Some request code*/);
它崩溃了:
java.lang.IllegalStateException: Unable to create new file:
/mnt/sdcard/DCIM/Camera/1354213408296.jpg at
android.os.Parcel.readException(Parcel.java:1335) at
android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:182) at
android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:136) at
android.content.ContentProviderProxy.insert(ContentProviderNative.java:415) at
android.content.ContentResolver.insert(ContentResolver.java:730)
崩溃:
contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, cv);
"1354213408296.jpg" 只是 System.currentTimeInMillis() + ".jpg",所以它始终是唯一的
android.permission.WRITE_EXTERNAL_STORAGE 在清单中提供
这是一些手机的环境规格(我正在使用 ACRA 来获取它):
getDataDirectory=/data
getDownloadCacheDirectory=/cache
getExternalStorageAndroidDataDir=/mnt/sdcard/Android/data
getExternalStorageDirectory=/mnt/sdcard
getExternalStorageState=removed
getRootDirectory=/system
getSecureDataDirectory=/data
getSystemSecureDirectory=/data/system
is4GConfig=true
is8GConfig=false
isEncryptedFilesystemEnabled=false
isExternalStorageEmulated=false
isExternalStorageRemovable=true
我能做些什么来防止这种崩溃?
【问题讨论】:
-
请告诉我您找到了解决方法...
-
@n1k1ch - 你解决了吗?
-
@Rat-a-tat-a-tat Ratatouille,我记得,有一些硬件问题(可能没有 sdcard)。问题很久没有复现了。
-
哦,好吧。我尝试创建一个没有 sdcard 的模拟器,但不幸的是无法产生崩溃.. :(
标签: android android-sdcard android-contentresolver