【问题标题】:Custom Content Provider - saving images自定义内容提供程序 - 保存图像
【发布时间】:2011-10-13 07:27:52
【问题描述】:

我不断收到 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): 在 com.hair.android.camera.ImageContentProvider.openFile(ImageContentProvider.java:230) 10-12 15:01:10.360: WARN/System.err(18679): 在 android.content.ContentProvider.openAssetFile(ContentProvider.java:726) 10-12 15:01:10.360: WARN/System.err(18679): 在 android.content.ContentProvider$Transport.openAssetFile(ContentProvider.java:247) 10-12 15:01:10.360: WARN/System.err(18679): 在 android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:534) 10-12 15:01:10.360: WARN/System.err(18679): 在 android.content.ContentResolver.openOutputStream(ContentResolver.java:402) 10-12 15:01:10.360: WARN/System.err(18679): 在 android.content.ContentResolver.openOutputStream(ContentResolver.java:378) 10-12 15:01:10.360: WARN/System.err(18679): 在 com.hair.android.HairAppActivity.onActivityResult(HairAppActivity.java:428) 10-12 15:01:10.360: WARN/System.err(18679): 在 android.app.Activity.dispatchActivityResult(Activity.java:4541) 10-12 15:01:10.360: WARN/System.err(18679): 在 android.app.ActivityThread.deliverResults(ActivityThread.java:2740) 10-12 15:01:10.360: WARN/System.err(18679): 在 android.app.ActivityThread.handleSendResult(ActivityThread.java:2787) 10-12 15:01:10.360: WARN/System.err(18679): 在 android.app.ActivityThread.access$2000(ActivityThread.java:122) 10-12 15:01:10.360: WARN/System.err(18679): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1032) 10-12 15:01:10.360: WARN/System.err(18679): 在 android.os.Handler.dispatchMessage(Handler.java:99) 10-12 15:01:10.360: WARN/System.err(18679): 在 android.os.Looper.loop(Looper.java:132) 10-12 15:01:10.360: WARN/System.err(18679): 在 android.app.ActivityThread.main(ActivityThread.java:4025) 10-12 15:01:10.360: WARN/System.err(18679): 在 java.lang.reflect.Method.invokeNative(Native Method) 10-12 15:01:10.360: WARN/System.err(18679): 在 java.lang.reflect.Method.invoke(Method.java:491) 10-12 15:01:10.360: WARN/System.err(18679): 在 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)

有什么办法可以解决这个问题吗?提前致谢

【问题讨论】:

    标签: android android-contentprovider


    【解决方案1】:
    new File(Environment.getExternalStorageDirectory()
                .toString() 
    

    那不正确 - 使用 Environment.getExternalStorageDirectory().getAbsolutePath()

    【讨论】:

    • 试过你的建议 - new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ ... 同样的问题。有没有人有一个可行的例子?
    • 试试这个代码stealthcopter.com/blog/2010/01/… 然后使用 Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "your_file_name")))
    猜你喜欢
    • 1970-01-01
    • 2015-09-05
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    相关资源
    最近更新 更多