2016-07-07 13 views
3

requestPermissionsアクティビティの奇妙な問題に直面しています。私はデバイス上でデバッグするかどうかを表示しています。 Androidスタジオエミュレータでアプリをデバッグするとうまくいきます。 以下は、許可を要求するためのコードです。ここで requestPermissionsが端末で許可ダイアログを表示しない、Androidスタジオエミュレータでうまく動作します

public boolean isStoragePermissionGranted() { 
     if (Build.VERSION.SDK_INT >= 23) { 
      if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { 
       return true; 
      } else { 
        requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 
       return false; 
      } 
     } else { //permission is automatically granted on sdk<23 upon installation 
      return true; 
     } 
    } 

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

そして、私はデバッグのために実行している

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     applicationId "abc.xyz" 
     minSdkVersion 23 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

デバイスOnePlus 1.私は何も足りないですがbuild.gradle AndroidManifest

のですか?ここで

requestPermissionsにしようとしたときに、いくつかの追加のログです:

07-08 19:42:14.222 798-815/? I/ActivityManager: START u0 {act=android.content.pm.action.REQUEST_PERMISSIONS pkg=com.android.packageinstaller cmp=com.android.packageinstaller/.permission.ui.GrantPermissionsActivity (has extras)} from uid 10206 on display 0 
07-08 19:42:14.224 798-815/? W/ActivityManager: Bad activity token: [email protected] 
               java.lang.ClassCastException: android.os.BinderProxy cannot be cast to com.android.server.am.ActivityRecord$Token 
                at com.android.server.am.ActivityRecord.forTokenLocked(ActivityRecord.java:424) 
                at com.android.server.am.ActivityStack.isInStackLocked(ActivityStack.java:467) 
                at com.android.server.am.ActivityStackSupervisor.isInAnyStackLocked(ActivityStackSupervisor.java:592) 
                at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1484) 
                at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1090) 
                at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:4077) 
                at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:4064) 
                at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:162) 
                at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2670) 
                at android.os.Binder.execTransact(Binder.java:453) 
07-08 19:42:14.224 798-815/? W/ActivityManager: Bad activity token: [email protected] 
               java.lang.ClassCastException: android.os.BinderProxy cannot be cast to com.android.server.am.ActivityRecord$Token 
                at com.android.server.am.ActivityRecord.forTokenLocked(ActivityRecord.java:424) 
                at com.android.server.am.ActivityStack.isInStackLocked(ActivityStack.java:467) 
                at com.android.server.am.ActivityStackSupervisor.isInAnyStackLocked(ActivityStackSupervisor.java:592) 
                at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1484) 
                at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1090) 
                at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:4077) 
                at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:4064) 
                at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:162) 
                at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2670) 
                at android.os.Binder.execTransact(Binder.java:453) 
07-08 19:42:14.225 798-815/? W/ActivityManager: startActivity called from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { act=android.content.pm.action.REQUEST_PERMISSIONS flg=0x800000 pkg=com.android.packageinstaller cmp=com.android.packageinstaller/.permission.ui.GrantPermissionsActivity (has extras) } 
07-08 19:42:14.258 12029-12029/? I/GrantPermissionsActivity: No package: null 
                  android.content.pm.PackageManager$NameNotFoundException 
                   at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:138) 
                   at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.getCallingPackageInfo(GrantPermissionsActivity.java:349) 
                   at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.onCreate(GrantPermissionsActivity.java:99) 
                   at android.app.Activity.performCreate(Activity.java:6251) 
                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403) 
                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510) 
                   at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363) 
                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                   at android.os.Looper.loop(Looper.java:148) 
                   at android.app.ActivityThread.main(ActivityThread.java:5461) 
                   at java.lang.reflect.Method.invoke(Native Method) 
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
+0

TO月を持つ1 OnePlusですそれでshMallow? –

+0

はい、それはMarshMallowを持っています –

+0

権限は既にデバイスのアプリケーション設定で受け入れられていますか? – Chol

答えて

1

変更

requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 

ActivityCompat.requestPermissions(this,new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 

https://stackoverflow.com/a/33162451/3142192

+0

私の最初の試みだった。それも動作していませんでした –

+0

@priyankbrahmbhatt ContextCompat.checkSelfPermission(this、android.Manifest.permission.WRITE_EXTERNAL_STORAGE)== PackageManager.PERMISSION_GRANTED)** –

+0

ContextCompatと同じ結果 –

関連する問題