2013-08-24 13 views
7

Ich versuche, integrierte Gallery App durch Drücken einer Taste in meiner App zu öffnen.Open Gallery App in Android

Ich versuche auf Android 2.3 und höher Handys. Die Telefone/Tablette, die ich habe, sind

Samsung S (Android 2.3.5) LG Handy (Android 2.3.3) Nexus One (Android 2.3.6) Android Tablet (Android 4.0.3) Galaxy Nexus (Android 4.3)

habe ich versucht, die folgenden:

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

obigen Code funktioniert auf Android-Tablet (4.0.3) und mein Nexus-Telefon auch .. aber wenn die gleiche Anwendung auf jedem Handy laufen, das ist unter 3.0 (gibt mir einen Fehler)

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 

So habe ich versucht, die folgenden:

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

Wieder funktioniert dies mit Telefonen ganz gut, die oben/EqualTo 4.0-Version sind. Am 4.0 unten Telefonen gibt es Alarmbenachrichtigung mit den Worten:

"No application can perform this action" 

Kann mir jemand mit dem Öffnen der Galerie helfen, aus einer Taste aus meiner app drücken?

+0

Vielleicht das. http://stackoverflow.com/questions/6016000/how-to-open-phones-gallery-through-code –

Antwort

24

dachte ich, den Weg aus ..

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

Dieses Stück Code gerade eröffnet die Galerie ohne Probleme. Könnte es bei allen Versionen funktionieren lassen!

Ich denke, es als Antwort für Leute, die eine Galerie auf allen Versionen öffnen möchten.

Danke Jungs! :)

+0

Hallo, wie wäre es mit Video-Galerie? –

+1

Danke, es funktionierte für mich, aber ich musste intention.setType ("image/*"); – iFrey

+0

Hiermit wird die Galerie mit Bild- und Videoalben auf einem Android 4.2-Gerät geöffnet. Perfekt! Vielen Dank. – 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

Bitte dokumentieren Sie, was der Code tut und warum er funktioniert. Antworten, die nur Code sind, werden am Ende in die Überprüfungswarteschlange für die manuelle Überprüfung gehen. – hexafraction

3

Dieses Probieren Sie

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 ZUR GALERIE APP OPEN

+0

Ich versuche, eine Galerie App zu öffnen .. Der obige Code kehrt zurück zu meiner App .. – TheDevMan