我一直得到一個FileNotFoundException異常/ IOException異常,自定義內容提供商 - 保存圖像
File directory = new File(Environment.getExternalStorageDirectory()
.toString()
+ "/Android/data/<package>");
if (!directory.exists()) {
boolean x = directory.mkdirs();
Log.d(TAG, "directory: " + x);
}
File path = new File(directory.getPath() , uri.getEncodedPath());
int imode = 0;
if (mode.contains("w")) {
imode |= ParcelFileDescriptor.MODE_READ_WRITE;
if (!path.exists()) {
try {
path.createNewFile();
} catch (IOException e) {
e.printStackTrace();
Log.d(TAG, "Error " + e.getMessage());
}
}
}
if (mode.contains("r"))
imode |= ParcelFileDescriptor.MODE_READ_ONLY;
if (mode.contains("+"))
imode |= ParcelFileDescriptor.MODE_APPEND;
return ParcelFileDescriptor.open(path, imode);
唯一的例外是
10-12 15:01:10.360: WARN/System.err(18679): java.io.IOException: No such file or directory
10-12 15:01:10.360:WARN/System.err的( 18679):在java.io.File.createNewFileImpl(Native Method) 10-12 15:01:10.360:WARN/System.err(18679):位於java.io.File.createNewFile(File.java:1115) 10-12 15:01:10.360:WARN/System.err(18679):at com.hair.android.camera.ImageContentProvider.openFile(ImageContentProvider。 java:230) 10-12 15:01:10.360:WARN/System.err(18679):at android.content.ContentProvider.openAssetFile(ContentProvider.java:726) 10-12 15:01:10.360:WARN/System.err(18679):at android.content.ContentProvider $ Transport.openAssetFile(ContentProvider.java:247) 10-12 15:01:10.360:WARN/System.err(18679):at android.content.ContentResolver。 openAssetFileDescriptor(ContentResolver.java:534) 10-12 15:01:10.360:WARN/System.err(18679):at android.content.ContentResolver.openOutputStream(ContentResolver.java:402) 10-12 15:01: 10.360:WARN/System.err(18679):at android.content.ContentResolver.openOutputStream(ContentResolver.java:378) 10-12 15:01:10.360:WARN/System.err(18679):at com.hair。 android.HairAppActivity.onActivityResult(HairAppActivity.java:428) 10-12 15:01:10.3 60:WARN/System.err(18679):at android.app.Activity.dispatchActivityResult(Activity.java:4541) 10-12 15:01:10.360:WARN/System.err(18679):at android.app。 ActivityThread.deliverResults(ActivityThread.java:2740) 10-12 15:01:10.360:WARN/System.err(18679):at android.app.ActivityThread.handleSendResult(ActivityThread.java:2787) 10-12 15: 01:10.360:WARN/System.err(18679):at android.app.ActivityThread.access $ 2000(ActivityThread.java:122) 10-12 15:01:10.360:WARN/System.err(18679):at android .app.ActivityThread $ H.handleMessage(ActivityThread.java:1032) 10-12 15:01:10.360:WARN/System.err(18679):at android.os.Handler.dispatchMessage(Handler.java:99) 10-12 15:01:10.360:WARN/System.err(18679):at android.os.Looper.loop(Looper.java:132) 10-12 15:01:10.360:WARN/Syst em.err(18679):at android.app.ActivityThread.main(ActivityThread.java:4025) 10-12 15:01:10.360:WARN/System.err(18679):at java.lang.reflect.Method。 invokeNative(Native Method) 10-12 15:01:10.360:WARN/System.err(18679):at java.lang.reflect.Method.invoke(Method.java:491) 10-12 15:01:10.360 :WARN/System.err(18679):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:841) 10-12 15:01:10.360:WARN/System.err(18679):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 10-12 15:01:10.360:WARN/System.err(18679):at dalvik.system.NativeStart.main(Native Method)
任何想法我可以解決這個問題?在此先感謝
想你的建議 - 新的文件(Environment.getExternalStorageDirectory()getAbsolutePath()+ ...同樣的問題。有沒有人有一個工作的例子? – William
試試這個代碼http://www.stealthcopter.com/blog/2010/01/android-saving-a-sound-file-to-sd-from-resource-and-setting-as -ringtone /然後使用Uri.fromFile(new File(Environment.getExternalStorageDirectory(), 「your_file_name」))) – Yahor10