1

我正在我的没有 sd 卡的无根 4.0.4 Android 设备上试验相机。我正在做一些连拍并将它们保存在内部存储器中。

我的问题是我的照片被存储在/data/data/my.package.name/files没有 root 权限的情况下我无法访问。我可以看到这些文件,但它们没有读取权限。

我发现了一些广播意图,应该使它们在标准图库中可见,但这似乎也不起作用。

有人对我如何访问我的照片有其他想法吗?或者调整我到目前为止尝试过的东西?

我如何保存照片:

public void onPictureTaken(byte[] data, Camera camera) {
        FileOutputStream outStream = null;
        try {           
            Log.i(TAG, ""+Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES));           
            Log.i(TAG,"fotofolder is "+getFilesDir());

            // write to local sandbox file system
             outStream = CameraDemo.this.openFileOutput(String.format("%d.jpg",
             System.currentTimeMillis()), 0);

            outStream.write(data);
            outStream.close();

       //this intent should make fotos visible in the gallery
            sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,                           
                     Uri.fromFile(Environment.getExternalStorageDirectory())));
                    // Uri.parse("file://" + Environment.getExternalStorageDirectory())));

            Log.i(TAG, "onPictureTaken - wrote bytes: " + data.length);
     ...
}

日志:

08-23 12:42:49.324: I/FrontCamera(15832): /mnt/sdcard/Pictures
08-23 12:42:49.327: I/FrontCamera(15832): fotofolder is /data/data/com.example.camera/files
08-23 12:42:49.370: I/FrontCamera(15832): onPictureTaken - wrote bytes: 430493

<--- 它把照片放到data/data...文件夹中,而不是有用的mnt/sdcard/Pictures

4

2 回答 2

1

使用MediaStore.Images.Media

MediaStore.Images.Media.insertImage(getContentResolver(), imageBitmap, imageTitle, imageDescription);

您可以使用内部存储进行保存。

于 2013-08-23T11:00:27.863 回答
1

要在图库中反映图像,请尝试以下操作:

MediaScannerConnection.scanFile(DetailsActivity.this, new String[] {filepath }, null, new OnScanCompletedListener() {

                                                @Override
                                                public void onScanCompleted(String path, Uri uri) {

                                                }
                                            });
于 2013-08-23T12:59:40.433 回答