我正在使用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_VIEW
mime类型时利用它的vnd.android.cursor.dir/image
意图处理。