###前提・実現したいこと
Android Studio 中のコードが赤いままです。Android 6.0 から、アプリのアクセス権が変わったので対応する為にコードを書いただけでは駄目なのでしょうか?
アプリの中で、個人を特定する為にSIMデータを取得しているのですが、
Android 6.0から、permissionが拒否された状態でインストールされる仕様になったらしいので、それに対応したいです。
Android 6.0 でのpermission(アクセス権)対応で、【Manifest.permission.READ_PHONE_STATE】が Android Studio 中で、赤いままです。Android 6.0 から、アプリのアクセス権が変わったので対応する為にコードを書いただけでは駄目なのでしょうか?
ソースコードは、下記のサイトを参考にさせて頂きました。
http://dev.classmethod.jp/etc/android-marshmallow-permission/
###発生している問題
Android 6.0 でのpermission対応で、【Manifest.permission.READ_PHONE_STATE】が動かない。 Android Studio 中のコードが赤いままです。Android 6.0 から、アプリのアクセス権が変わったので対応する為にコードを書いただけでは駄目なのでしょうか?
###該当のソースコード
java
1 2 if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) == 3 PackageManager.PERMISSION_GRANTED) { 4 showPhoneNumber(); 5 } else { 6 if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, 7 Manifest.permission.READ_PHONE_STATE)) { 8 showExplanationDialog("1度無効にしても設定画面から有効にすることができます"); 9 } else { 10 showExplanationDialog("許可してください"); 11 } 12 } 13 14 @Override 15 public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 16 if (PERMISSIONS_REQUEST_READ_PHONE_STATE == requestCode) { 17 if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 18 showPhoneNumber(); 19 } 20 } 21 } 22 private void showPhoneNumber() { 23 TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 24 Toast.makeText(this, String.valueOf(telephonyManager.getLine1Number()), Toast.LENGTH_LONG).show(); 25 } 26 private void showExplanationDialog(String message) { 27 AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 28 alertDialogBuilder.setTitle("お知らせ"); 29 alertDialogBuilder.setMessage(message); 30 alertDialogBuilder.setPositiveButton("次へ", 31 new DialogInterface.OnClickListener() { 32 @Override 33 public void onClick(DialogInterface dialog, int which) { 34 ActivityCompat.requestPermissions(MainActivity.this, 35 new String[]{Manifest.permission.READ_PHONE_STATE}, PERMISSIONS_REQUEST_READ_PHONE_STATE); 36 } 37 }); 38 alertDialogBuilder.setCancelable(true); 39 AlertDialog alertDialog = alertDialogBuilder.create(); 40 alertDialog.show(); 41 } 42 43
###試したこと
compileSdkVersion 23 にしたり、
<uses-permission-sdk-m android:name="android.permission.READ_PHONE_STATE" />
としたりしましたが、まったく変わりありませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
Android Studio 1.2 を使用。
SDKは、23をインストールしています。
AndroidManifestには、下記を記載しています。
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
build.gradleには、下記を記載しています。
compileSdkVersion 23
buildToolsVersion "23.0.1"
minSdkVersion 14
targetSdkVersion 23
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/10 00:19