0

我想在用户按下按钮时打开画廊。我使用的代码是这样的:

Intent resimGaleri = new Intent();
resimGaleri.setType("image/*");
resimGaleri.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Main.this.startActivity(resimGaleri);

但是,在这段代码中,当用户按下按钮打开图库时,Android 会询问“使用完成操作”,但我希望它直接打开图库而不询问。我可以使用以下代码做到这一点:

startActivity(new Intent("com.android.gallery3d"));

但我不确定是否所有设备都使用“com.android.gallery3d”。有可能还是有其他方法可以做到这一点?

4

2 回答 2

2

并非所有设备都有 com.android.gallery3d,但大多数设备都有。您可以通过 MIME 类型 image/* 的意图操作 VIEW 查询包管理器以获取活动列表。然后查看列表以找到正确的列表。

final Intent i = new Intent(Intent.ACTION_VIEW, null);
i.setType("image/*");
final List<ResolveInfo> apps = packageManager.queryIntentActivities(i, 0);
if(apps != null) {
    for(ResolveInfo info : apps) {
        if(info.resolvePackageName!=null && info.resolvePackageName.contains("gallery3d")) {//Maybe use more strict condition
             //This is the target you want
             //startActivity(XXXX);
             return;
        }
    }
    //Target not found
    //Start the first match or handle your exception here
} else {
//Handle exception
}
于 2013-08-20T08:22:34.163 回答
0

你可以使用这个代码:(它测试的代码不是查看按摩问你)。

// select a file
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), 1);
于 2016-04-19T01:00:35.920 回答