2016-12-28 6 views
1

J'ouvre l'application Galerie à travers mon application en utilisant ce code -Android - Galerie App NullPointerException - OnePlus Un

Intent galleryIntent = new Intent(Intent.ACTION_VIEW, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
galleryIntent.setType("image/*"); 
startActivity(galleryIntent); 

et quand je sélectionnez "Ouvrir avec Gallery", les accidents app galerie avec cette stacktrace sur OnePlus un appareil -

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cyngn.gallerynext/com.cyngn.gallerynext.app.fullscreenviewer.FullscreenViewer}: java.lang.NullPointerException: uriString 
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358) 
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420) 
                at android.app.ActivityThread.access$900(ActivityThread.java:154) 
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 
                at android.os.Handler.dispatchMessage(Handler.java:102) 
                at android.os.Looper.loop(Looper.java:135) 
                at android.app.ActivityThread.main(ActivityThread.java:5292) 
                at java.lang.reflect.Method.invoke(Native Method) 
                at java.lang.reflect.Method.invoke(Method.java:372) 
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) 
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) 
               Caused by: java.lang.NullPointerException: uriString 
                at android.net.Uri$StringUri.<init>(Uri.java:470) 
                at android.net.Uri$StringUri.<init>(Uri.java:460) 
                at android.net.Uri.parse(Uri.java:432) 
                at com.cyngn.gallerynext.app.fullscreenviewer.FullscreenViewer.a(SourceFile:305) 
                at com.cyngn.gallerynext.app.fullscreenviewer.FullscreenViewer.onCreate(SourceFile:217) 
                at android.app.Activity.performCreate(Activity.java:5990) 
                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311) 
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420)  
                at android.app.ActivityThread.access$900(ActivityThread.java:154)  
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)  
                at android.os.Handler.dispatchMessage(Handler.java:102)  
                at android.os.Looper.loop(Looper.java:135)  
                at android.app.ActivityThread.main(ActivityThread.java:5292)  
                at java.lang.reflect.Method.invoke(Native Method)  
                at java.lang.reflect.Method.invoke(Method.java:372)  
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)  
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)  

Je ne veux pas passer un URI particulier, je veux juste ouvrir le dossier de la galerie par défaut. Comment éviter ce crash?

+1

Sans type spécifique ne fonctionne toujours pas? Essayez également d'ajouter des autorisations: _READ_EXTERNAL_STORAGE_ et _WRITE_EXTERNAL_STORAGE_ –

+0

http://stackoverflow.com/a/6016311/5156075 –

+0

@JohnJoe n'est pas "contenu: // media/internal/images/media" similaire à android.provider.MediaStore. Images.Media.EXTERNAL_CONTENT_URI? – Mallika

Répondre

1

utilisation sans setType("image/*")

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

yourIntent.setType(String mimeType) c'est représenter des données de type MIME que tu veux obtenir. En utilisant android.provider.MediaStore.Images.Media, vous avez MIME constante. Je suppose, vous trouvez plus ici docs

0

Si vous voulez que application ouverte (parce que vous écrivez: Je veux juste ouvrir le dossier de la galerie par défaut):

Intent intent = new Intent("com.cyngn.gallerynext"); 

ou

Si vous souhaitez obtenir une données de la galerie, see this post how to do it.

+0

Hey est-ce valable pour toutes les versions/téléphones? Aurai-je besoin d'une vérification de version de construction? – Mallika

+0

Ouverture de l'application spécifique "com.cyngn.gallerynext" est un travail uniquement sur cyanogen mod. Sur d'autres builds Android peut être une application pour l'ouverture de photos d'un autre. L'intention sera également de travailler sur n'importe quel téléphone –