以编程方式将app打开为app

时间:2013-08-20 08:17:03

标签: android

我想在用户按下按钮时打开图库。我使用的代码是:

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'。是否有可能或有其他方法可以做到这一点?

2 个答案:

答案 0 :(得分:2)

并非所有设备都有com.android.gallery3d,而大多数设备都有。您可以通过MIME类型为image / *的intent操作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
}

答案 1 :(得分:0)

您可以使用此代码: (它测试的代码不能查看按摩问你)。

// select a file
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), 1);