2017-01-02 160 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; 
      } 
     } 
    }