0

我想打开我创建但不在画廊中的文件夹中的所有图像。到目前为止,我已经搜索并在某种程度上让它工作了。唯一的问题是它只显示图像库,告诉我要选择哪个文件夹。就像它忽略路径并默认为画廊一样。我在做什么有问题吗?请温柔,我通常会搜索和搜索,但可能还不够?下面是我正在使用的一个片段。

另外,我在这里尝试了解决方案:Built-in gallery in specific folder,但它只显示一张图像,而不是目录中的所有图像。也许我需要回到这个并改变它来工作?

private void setIntentToSpecificFolder() {
    String folderPath = Environment.getExternalStorageDirectory().toString() + "/com.qk.livewallpapertest/";
    //int folderBucketId = folderPath.toLowerCase().hashCode();
    //Uri targetUri = Media.EXTERNAL_CONTENT_URI.buildUpon().appendQueryParameter("bucketId", String.valueOf(folderBucketId)).build();
    Uri targetUri = Uri.parse(folderPath);

    Log.v(TAG,"targetUri: " + getRealPathFromURI(targetUri) + "folderPath: " + folderPath);

    Intent intent = new Intent(Intent.ACTION_PICK);
    intent.setDataAndType(targetUri, "vnd.android.cursor.dir/image");
    startActivityForResult(intent,SELECT_PHOTO);
}
4

2 回答 2

0

每当您使用类似 的操作ACTION_PICK时,您都在隐含地将控制权交给另一个应用程序,就像指向第三方网站的链接将控制权交给另一个网站一样。

在这种情况下,不需要设备具有可以ACTION_PICK从特定目录执行的任何操作。一个设备可能有零个、一个或 N 个应用程序能够做到这一点。这些应用程序是什么以及它们做什么取决于它们各自的作者。

因此,如果您的应用程序的功能取决于用户从特定目录中选择图像的能力,那么您需要自己实现。如果这是一个不错的选择,但不是必需的,您可以坚持ACTION_PICK但建议用户安装您确定可提供所需结果的某某文件浏览器应用程序。

于 2013-08-31T21:52:24.763 回答
0

这是一个简化的

private  MediaScannerConnection conn;
private void notifySystemWithImage(final File imageFile) {

        conn = new MediaScannerConnection(this, new MediaScannerConnectionClient() {

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

            try {
                if (uri != null) {
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setDataAndType(uri, "image/*");
                    startActivity(intent);
                }
            } finally {
                conn.disconnect();
                conn = null;
            }
        }

        @Override
        public void onMediaScannerConnected() {
            conn.scanFile(imageFile.getAbsolutePath(), "*/*"); 

        }
    });

    conn.connect();
}
于 2013-10-27T23:17:42.453 回答