我正在使用Gallery3D (froyo-stable)
我正在尝试制作一个小应用程序,它只显示库视图中特定文件夹中的图像。

Uri targetUri = Media.EXTERNAL_CONTENT_URI;
String folderPath = Environment.getExternalStorageDirectory().toString() + "/DCIM/";
int folderBucketId = folderPath.toLowerCase().hashCode();
targetUri = targetUri.buildUpon().appendQueryParameter("bucketId", String.valueOf(folderBucketId)).build();

initializeDataSource()
// Creating the DataSource objects.
final LocalDataSource localDataSource = new LocalDataSource(Gallery.this, targetUri.toString(), false);

但我有错误
"Error finding album " + bucketId);

CacheService.loadMediaSets.
 Log.e(TAG, "Error finding album " + bucketId);

我该怎么解决?
谢谢你

最佳答案

“错误查找相册”问题很可能是由于代码中bucketId的“dcim”文件夹中没有任何图像。例如,如果您使用“/dcim/camera”代替(假设有一些图像),则不应该得到错误。
但是,如果我正确地理解了您的需求,我相信您需要对Gallery3D代码进行额外的修改,以便在按照此路线启动时使其显示特定的文件夹(因为代码并不是设计用于此目的)。
我相信,通过在onCreate()中将意图设置为一个特定的意图,您可以更轻松地实现您想要的目标,而不是使用上面的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setIntentToSpecificFolder();

    mApp = new App(Gallery.this);
    // :
    // the rest of onCreate() code
    // :
    Log.i(TAG, "onCreate");
}

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

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(targetUri, "vnd.android.cursor.dir/image");
    setIntent(intent);
}

基本上,我们在这里所做的是在应用程序提供ACTION_VIEWmime类型时利用它的vnd.android.cursor.dir/image意图处理。

07-28 03:50
查看更多