2013-08-24 19 views
7

我试图打开内置图库应用程序在我的应用程序中按下按钮。在Android中打开图库应用程序

我尝试了Android 2.3及以上版本的手机。在手机/平板电脑,我有是

三星S(的Android 2.3.5) LG手机(安卓2.3.3) 歌Nexus One(Android的2.3.6) Android平板电脑(安卓4.0.3) 的Galaxy Nexus (安卓4.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" 

有人可以帮我打开图库从我的应用程序按下按钮?

+0

也许这样。 http://stackoverflow.com/questions/6016000/how-to-open-phones-gallery-through-code –

回答

24

我想出的办法..

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

这段代码刚才打开的画廊,没有任何问题。可以让它适用于所有版本!

想到把它作为正在寻找在所有版本上打开图库的人的答案。

谢谢! :)

+0

嗨,视频库怎么样? –

+1

谢谢,它为我工作,但我不得不添加intent.setType(“图像/ *”); – iFrey

+0

这将在Android 4.2设备上打开包含图像和视频相册的图库。完善!谢谢。 – Hong

-2
Intent intent = new Intent(); 
      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      startActivityForResult(
        Intent.createChooser(intent, "Complete action using"), 
        PICK_FROM_FILE); 
+1

请记录代码的作用和原因。只是代码的答案将最终转到审查队列进行手动检查。 – hexafraction

3

尝试了这一点

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); 
    } 
}); 

UPDATE onActivityResult

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

UPDATE打开媒体库APP

Intent galleryIntent = new Intent(Intent.ACTION_VIEW, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivity(galleryIntent); 
+0

我试图打开一个图库应用程序..上面的代码恢复到我的应用程序.. – TheDevMan

相关问题