如何检索我的Android应用程序可以访问的当前应用程序文件夹?

时间:2012-12-05 09:47:47

标签: android android-camera mediastore android-mediarecorder

我正在我的应用程序中启动一个凸轮意图,并希望图片将存储在我的app文件夹中的app文件夹中。为了达到这个目的,我正在开始像这样的凸轮意图

public void startCamAction(View view) {

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, this.getApplicationContext().getDir("images", MODE_PRIVATE));
    startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE), TAKE_PICTURE);
}

在下一个活动中我想用这个图片做一些事情,但我想它不起作用,因为我的应用程序无法访问此文件夹。存储图片的文件夹是

content:://media/external/images/media/20

这不是理想的路径,我如何配置它以便将图片存储在我的app文件夹中?

由于

3 个答案:

答案 0 :(得分:1)

实际上content:://media/external/images/media/20Uri 不是真正的文件路径 ..

所以如果你想从这个Uri获得真正的路径,那么你必须做一些像

这样的事情
Uri uri = content:://media/external/images/media/20
String imageFile = getRealPathFromURI(uri);

,方法getRealPathFromURI()

private String getRealPathFromURI(Uri contentURI) {
    Cursor cursor = getContentResolver()
               .query(contentURI, null, null, null, null); 
    cursor.moveToFirst(); 
    int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
    return cursor.getString(idx); 
}

<强>更新

同样来自您的代码行,

intent.putExtra(MediaStore.EXTRA_OUTPUT, this.getApplicationContext().getDir("images", MODE_PRIVATE));

您捕获的图像存储在应用程序的内部存储中。因此,您可以在任何活动中访问应用程序中的此目录。

要从此目录中检索文件,您可以使用简单文件操作。

像,

File directory = this.getApplicationContext().getDir("images", MODE_PRIVATE);

答案 1 :(得分:0)

使用

Context.getExternalCacheDir()
Context.getExternalFilesDir(String type)

您将获得SD卡上您的应用有权访问的目录。它看起来像

/sdcard/Android/your.app.package.name/

不要忘记将此添加到您的清单中:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

答案 2 :(得分:0)

我怀疑相机可以保存到应用程序的目录中。主要是因为权利问题。

最好是将它存储到外部商店(就像你所做的那样,从URI来判断:content://media/external/images/media/20

您始终可以使用此URI复制文件并将其保存在应用程序数据目录中,然后将其从外部目录中删除。

其他解决方案是指定自己的ContentProvider。在此ContentProvider中,您可以保存文件。 http://dharmendra4android.blogspot.be/2012/04/save-captured-image-to-applications.html