3

(TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);にアクセスしようとするログインフラグがあります。これはLollipop 5.1までのデバイスでうまくいきます。私がMarshmallow 6.01で試したところ、セキュリティ上の例外が示されました。だから私はアンドロイドのドキュメントからランタイムのアクセス許可を要求するコードを追加しました。ここにコードがあります許可をリクエストした後、Android MでパッケージインストーラがクラッシュするREAD_SMS

int permissionCheck = ContextCompat.checkSelfPermission(getActivity(),Manifest.permission.READ_SMS); 
    if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 

     // Should we show an explanation? 
     if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.READ_SMS)) { 

      // Show an expanation to the user *asynchronously* -- don't block 
      // this thread waiting for the user's response! After the user 
      // sees the explanation, try again to request the permission. 



     } else { 

      // No explanation needed, we can request the permission. 

      ActivityCompat.requestPermissions(getActivity(),new String[]{Manifest.permission.READ_SMS},REQUEST_SMS); 

      // REQUEST_SMS is an 
      // app-defined int constant. The callback method gets the 
      // result of the request. 
     } 
    }else { 
     tMgr = (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE); 

    } 

私のアプリが起動し、すぐに私のパッケージインストーラがクラッシュします。ここにログがあります

03-23 12:12:13.618 8949-8949/com.android.packageinstaller E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.android.packageinstaller, PID: 8949 
    Theme: themes:{default=overlay:system, iconPack:system, fontPkg:system, com.android.systemui=overlay:system} 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.packageinstaller/com.android.packageinstaller.permission.ui.GrantPermissionsActivity}: java.lang.NullPointerException: Attempt to get length of null array 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2450) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520) 
     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:5466) 
     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) 
    Caused by: java.lang.NullPointerException: Attempt to get length of null array 
     at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.computePermissionGrantState(GrantPermissionsActivity.java:293) 
     at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.updateDefaultResults(GrantPermissionsActivity.java:343) 
     at com.android.packageinstaller.permission.ui.GrantPermissionsActivity.onCreate(GrantPermissionsActivity.java:100) 
     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:2520)  
     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:5466)  
     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) 

アプリがアクセス権を要求するためのUIを表示しようとすると、パッケージインストーラがクラッシュすると思います。 は、私はすでにこのようなマニフェストで私のマニフェスト

+0

マニフェスト –

+0

<使用許可アンドロイド:名=「android.permission.READ_SMS」 アンドロイド:maxSdkVersion =「22」/>を示し –

+0

を私はログから理解できるすべてがあることはGrantPermissionsActivity 'でライン#293です。 'null'の' Array'に対して 'length()'が呼び出されています – camelCaseCoder

答えて

6

READ_SMSマニフェストのアクセス許可をAPI 22以下に制限しました。

<uses-permission android:name="android.permission.READ_SMS" android:maxSdkVersion="22" /> 

コメントに記載されているとおり、このマニフェストパーミッションは、実行時リクエストに加えて、マーシュマロー以上ではまだ必要です。アクセス許可要素から属性maxSdkVersionを削除します。

+0

ありがとう、これは働いた。私はmaxSdkVersionを追加するために他のいくつかのサイトからその情報を得ました。私はそれを削除し、正常に動作します –

+0

問題ありません!喜んで助けてください。あなたはそれを見たサイトを覚えていますか? –

+0

いいえ。私は昨日からすべての可能なクエリを検索しています。その間に私はmaxsdkversionを追加する提案を得た –

2

宣言許可で<uses-permission android:name="android.permission.READ_SMS"/>を追加しました:

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

マインドそれを、何のmaxSdkVersion属性がありません。 Reference

関連する問題