当前位置: 首页 > 知识库问答 >
问题:

Android中的Open Gallery应用程序

陶博涉
2023-03-14

我试图打开内置的画廊应用程序按下我的应用程序中的按钮。

我正在试用Android 2.3及以上版本的手机。我拥有的手机/平板电脑是

三星S(Android2.3.5)、LG手机(Android3.3)、Nexus One(Android1.3.6)、Android平板电脑(Android4.0.3)和Galaxy Nexus(Android5.3)

我尝试了以下方法

Intent intent = new Intent(Intent.ACTION_VIEW, null);
intent.setType("image/*");
startActivity(intent); 

上述代码在Android平板电脑(4.0.3)和我的Nexus手机上运行良好...但如果在任何低于3.0的手机上运行相同的应用程序(给我错误)

08-24 11:47:53.628: E/AndroidRuntime(787):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
08-24 11:47:53.628: E/AndroidRuntime(787):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
08-24 11:47:53.628: E/AndroidRuntime(787):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-24 11:47:53.628: E/AndroidRuntime(787):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
08-24 11:47:53.628: E/AndroidRuntime(787):  at android.os.Handler.dispatchMessage(Handler.java:99)
08-24 11:47:53.628: E/AndroidRuntime(787):  at android.os.Looper.loop(Looper.java:130)
08-24 11:47:53.628: E/AndroidRuntime(787):  at android.app.ActivityThread.main(ActivityThread.java:3687)
08-24 11:47:53.628: E/AndroidRuntime(787):  at java.lang.reflect.Method.invokeNative(Native Method)
08-24 11:47:53.628: E/AndroidRuntime(787):  at java.lang.reflect.Method.invoke(Method.java:507)
08-24 11:47:53.628: E/AndroidRuntime(787):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
08-24 11:47:53.628: E/AndroidRuntime(787):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
08-24 11:47:53.628: E/AndroidRuntime(787):  at dalvik.system.NativeStart.main(Native Method)
08-24 11:47:53.628: E/AndroidRuntime(787): Caused by: java.lang.NullPointerException
08-24 11:47:53.628: E/AndroidRuntime(787):  at com.cooliris.media.Gallery.onCreate(Gallery.java:323)
08-24 11:47:53.628: E/AndroidRuntime(787):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-24 11:47:53.628: E/AndroidRuntime(787):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
08-24 11:47:53.628: E/AndroidRuntime(787):  ... 11 more

所以我尝试了以下方法:

Intent intent1= new Intent("android.intent.action.MAIN", null);
intent1.addCategory("android.intent.category.APP_GALLERY");
Intent intent2 = Intent.createChooser(intent1, "Gallery");
startActivity(intent2);

同样,这适用于高于/equalto 4.0版本的手机。在下面的4.0手机上,它会发出警告通知:

"No application can perform this action"

有人能帮我从按下我的应用程序按钮打开画廊吗?

共有3个答案

薛涛
2023-03-14
Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(
                    Intent.createChooser(intent, "Complete action using"),
                    PICK_FROM_FILE);
傅正阳
2023-03-14

试试这个

btnGallery.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, ""), PICK_IMAGE);
    }
});

活动更新结果

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode != Activity.RESULT_CANCELED) {
        if (requestCode == PICK_IMAGE) {
            Uri selectedImageUri = data.getData();
        } 
    }
}

更新以打开图库应用程序

Intent galleryIntent = new Intent(Intent.ACTION_VIEW, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivity(galleryIntent);
阎德义
2023-03-14

我想出了办法。。

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(
 "content://media/internal/images/media")); 
 startActivity(intent); 

这段代码刚刚打开了画廊,没有任何问题。可以让它在所有版本上运行!

我想把它作为对那些想在所有版本上开一个画廊的人的回答。

谢谢伙计们!:)

 类似资料:
  • 有人能给我解释一下这个LogCat输出以及如何解决它吗?我用手机(三星Galaxy Nexus)测试我的Android应用程序,就这样;系统强制拘留并将此打印在日志中...

  • 我明白了,我必须提到Proguard属性文件中的外部库。我该怎么提才是问题所在。 请查看我的proguard文件

  • 我们有一个应用程序,利用在应用程序计费。我们看到的问题如下: 当使用较高版本代码的构建被上传到Play Developer控制台时,In App Billing将停止在设备上的应用程序(使用较低版本代码)上工作,表示“应用程序未配置为计费”。 这很好,在测试的时候,但问题是--当应用程序在Google Play商店中时,会有什么行为?当您替换应用程序(以执行更新)时,处于野生状态(具有较低版本代码

  • 问题内容: 我有一个facebook初始化sdk调用,启动应用程序时需要它来初始化: 我想使用我的Application类来做到这一点。例如: 我的主要活动是使用Facebook登录按钮: 我怎么称呼我的申请单身人士?我如何使其onCreate()工作? 问题答案: 要使您的App类遵循 Singleton设计模式 : 然后在其他任何类中使用它: 如果这是您要的..

  • 问题内容: 是否有一个可行的示例演示了如何在ListView中动态附加行?例如: 您正在从不同的域中提取RSS feed 然后在ListView中显示前10个项目(当您在后台运行其他线程时,继续提取提要) 您滚动并到达列表的底部,然后单击按钮以查看更多项目 然后,ListView将附加附加的10个项目,现在总共有20个项目。 任何建议如何做到这一点? 尼古拉斯 问题答案: 要将新项动态添加到列表中

  • 问题内容: 现在完成XML SAX解析之后,我将在应用程序中进行JSON解析。我在这里为您提供杰森 现在,我提到了一个Json解析的示例,在该示例中,他们创建了一个jString对象,我对此特定行有疑问,如下所示: 任何人都可以让我澄清一下。完整示例的链接如下: http://www.androidcompetencycenter.com/2009/10/json-parsing-in- andr