2017-01-02 162 views
0

我是新來的編程爲Android和試圖建立一個測試應用程序play music但我不斷收到此錯誤,當我嘗試在Android模擬器中運行應用程序。任何幫助將不勝感激。Android模擬器中的應用程序崩潰

01/02 12:25:31: Launching app 
$ adb push C:\GPA CALC\playmusic\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.wordpress.mbedo.www.playmusic 
$ adb shell pm install -r "/data/local/tmp/com.wordpress.mbedo.www.playmusic" 
Success 


$ adb shell am start -n "com.wordpress.mbedo.www.playmusic/com.wordpress.mbedo.www.playmusic.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER 
Client not ready yet..Waiting for process to come online 
Connected to process 2293 on device emulator-5554 
W/System: ClassLoader referenced unknown path: /data/app/com.wordpress.mbedo.www.playmusic-2/lib/x86 
D/AndroidRuntime: Shutting down VM 


        --------- beginning of crash 
E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.wordpress.mbedo.www.playmusic, PID: 2293 
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wordpress.mbedo.www.playmusic/com.wordpress.mbedo.www.playmusic.MainActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media from pid=2293, uid=10053 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission() 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 
         at android.app.ActivityThread.-wrap12(ActivityThread.java) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) 
         at android.os.Handler.dispatchMessage(Handler.java:102) 
         at android.os.Looper.loop(Looper.java:154) 
         at android.app.ActivityThread.main(ActivityThread.java:6077) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
        Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media from pid=2293, uid=10053 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission() 
         at android.os.Parcel.readException(Parcel.java:1683) 
         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:530) 
         at android.content.ContentResolver.query(ContentResolver.java:472) 
         at com.wordpress.mbedo.www.playmusic.MainActivity.onCreate(MainActivity.java:57) 
         at android.app.Activity.performCreate(Activity.java:6662) 
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)  
         at android.app.ActivityThread.-wrap12(ActivityThread.java)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)  
         at android.os.Handler.dispatchMessage(Handler.java:102)  
         at android.os.Looper.loop(Looper.java:154)  
         at android.app.ActivityThread.main(ActivityThread.java:6077)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)  

終止應用程序。

+1

您還沒有添加READ_EXTERNAL_STORAGE許可清單中,還要確保您已經添加運行權限讀取外部存儲,以便能夠從Android上運行6 – Redman

回答

0

隨着你的logcat的說明,您的應用程序試圖訪問/讀取內部存儲,這是由機器人否認系統。需要在Android版本> = M的權限。

java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media from pid=2293, uid=10053 requires android.permission.READ_EXTERNAL_STORAGE

在Android應用程序,你必須向用戶盛大權限訪問他/她的存儲。

  // if android version >= M 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      if (ActivityCompat.checkSelfPermission 
        (this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 
       requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 0); 

      } 
     } 

詢問許可後,必須辦理:

 @Override 
     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     { 
      switch (requestCode) { 
      case 0: 
       if (grantResults[0] == PackageManager.PERMISSION_GRANTED){ 
       // permission granted 
       } 
       else { 
        //not granted 
       } 
       break; 
      } 
     } 
    }