2013-08-24 18 views
7

Próbuję otworzyć wbudowaną aplikację galerii naciskając przycisk w mojej aplikacji.Aplikacja Otwórz Galerię w Androidzie

Próbuję na Android 2.3 i nowszych telefonach. Telefony/tabletkę że mam to

Samsung S (Android 2.3.5) LG telefon (Android 2.3.3) Nexus One (Android 2.3.6) Android tablet (Android 4.0.3) Galaxy Nexus (Android 4.3)

próbowałem następujące:

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

powyższy kod działa poprawnie na tablecie z Androidem (4.0.3) i moim telefonie Nexus zbyt .. ale jeśli uruchomić tę samą aplikację na każdym telefonie, który jest poniżej 3,0 (daje mi błąd)

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 

Tak próbowałem następujące:

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

Znowu to działa dobrze z telefonami, które są powyżej/equalto 4.0 wersji. Na 4,0 poniżej komórkowych daje powiadomienie zawiadomienie mówiąc:

"No application can perform this action" 

Czy ktoś mógłby mi pomóc z otwarciem galerii z naciśnięcie przycisku z mojej aplikacji?

+0

Może to. http://stackoverflow.com/questions/6016000/how-to-open-phones-gallery-trough-code –

Odpowiedz

24

zorientowali się drogę ..

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

Ten fragment kodu po prostu otworzył galerię bez żadnych problemów. Czy to działa we wszystkich wersjach!

Pomyślałem, że jest to odpowiedź dla osób, które chcą otworzyć galerię we wszystkich wersjach.

Dzięki Chłopaki! :)

+0

Cześć, co powiesz na galerię wideo? –

+1

Dzięki, zadziałało dla mnie, ale musiałem dodać intent.setType ("image/*"); – iFrey

+0

Spowoduje to otwarcie galerii zawierającej zdjęcia i albumy wideo na urządzeniu z systemem Android 4.2. Idealny! Dzięki. – 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

Proszę udokumentować, co robi kod i dlaczego działa. Odpowiedzi, które są po prostu kodem, trafią do kolejki do sprawdzania ręcznego. – hexafraction

3

to wypróbować

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 DO otwarta galeria APP

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

Próbuję otworzyć aplikację Galeria. Powyższy kod powraca do mojej aplikacji. – TheDevMan

Powiązane problemy