2016-10-09 4 views
0

Je obtiens l'application arrêtée lors de l'exécution de l'application et lors du débogage de l'application a l'erreur suivante. Ci-dessous est les journaux de LogCat:lors de l'exécution de l'application soudainement l'application s'est arrêtée et lors du débogage de l'application a l'erreur suivante

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.example.srishti.myapplication, PID: 13312 
       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.srishti.myapplication/com.example.srishti.myapplication.MainActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media from pid=13312, uid=10146 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission() 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2423) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483) 
        at android.app.ActivityThread.access$900(ActivityThread.java:153) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5438) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629) 
       Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media from pid=13312, uid=10146 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission() 
        at android.os.Parcel.readException(Parcel.java:1620) 
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183) 
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135) 
        at android.content.ContentProviderProxy.query(ContentProviderNative.java:421) 
        at android.content.ContentResolver.query(ContentResolver.java:493) 
        at android.content.ContentResolver.query(ContentResolver.java:435) 
        at com.example.srishti.myapplication.MainActivity.getSongList(MainActivity.java:142) 
        at com.example.srishti.myapplication.MainActivity.onCreate(MainActivity.java:58) 
        at android.app.Activity.performCreate(Activity.java:6303) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483)  
        at android.app.ActivityThread.access$900(ActivityThread.java:153)  
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)  
        at android.os.Handler.dispatchMessage(Handler.java:102)  
        at android.os.Looper.loop(Looper.java:148)  
        at android.app.ActivityThread.main(ActivityThread.java:5438)  
        at java.lang.reflect.Method.invoke(Native Method)  
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)  
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)  
I/Process: Sending signal. PID: 13312 SIG: 9 
Disconnected from the target VM, address: 'localhost:8601', transport: 'socket' 

Répondre

0

Consultez votre journal d'exception a la solution

requires android.permission.READ_EXTERNAL_STORAGE, or there is no runtime-permission model implementation if you are using API 23 or above 

votre accès au stockage, mais il n'y a pas des utilisations-autorisation définie dans le manifeste.

comme

<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="..." > 

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

// or if you wants to write to then add only below 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

Mais plus probable que c'est le cas où vous utilisez l'API 23 (guimauve ou au-dessus) afin d'ajouter le modèle runtime-permission pour API 23 ou plus tard follow the official docs for implementation

1

besoin de la permission READ_EXTERNAL_STORAGE

1

Ajouter une permission dans votre manifeste

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Si vous utilisez l'API 23+ puis ajoutez le code suivant dans votre activité ainsi,

if (Build.VERSION.SDK_INT >= 23) { 
      if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) 
        != PackageManager.PERMISSION_GRANTED) { 
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 
    } 
} 

Il renvoie le résultat dans,

@Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      Log.v("", "Permission: " + permissions[0] + "was " + grantResults[0]); 
     } 

    }