Posted at

Android MのPermissionを試してみた

More than 3 years have passed since last update.

Permissions | Android Developers ←のドキュメントをざっと読んで試してみました。


注意


  • 本当に軽く試しただけなので間違ってる箇所あるかもです。

  • 今後変更される可能性あります。


Gradle設定

MのPermission管理を有効にするためにcompileSdkVersionminSdkVersiontargetSdkVersionを変更しています。

ドキュメントに下記のように書いてあって、現状だとminSdkVersionを変更できないっぽいので下位バージョンで試せなかった。


For the preview release, you must set minSdkVersion to "MNC" to compile with the preview SDK.



build.gradle

apply plugin: 'com.android.application'

android {
compileSdkVersion "android-MNC"
buildToolsVersion "22.0.1"

defaultConfig {
applicationId "com.example.example"
minSdkVersion "MNC"
targetSdkVersion "MNC"
versionCode 1
versionName "1.0"
}
// ...
}

// ...



Manifest

MでのPermission指定はuses-permission-sdk-mを使うみたいです。


AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.example" >

<uses-permission-sdk-m android:name="android.permission.READ_PHONE_STATE" />

<!-- ... -->

</manifest>



コード

電話番号を取得するサンプルです。


MainActivity.java

public class MainActivity extends AppCompatActivity {

private static int MY_PERMISSIONS_REQUEST_READ_PHONE_STATE = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
// 権限がない場合はリクエスト
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);
} else {
showLineNumber();
}
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (MY_PERMISSIONS_REQUEST_READ_PHONE_STATE == requestCode) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 許可された
showLineNumber();
} else {
// 拒否された
Toast.makeText(this, "拒否された", Toast.LENGTH_SHORT).show();
}
}
}

private void showLineNumber() {
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
Toast.makeText(this, telephonyManager.getLine1Number(), Toast.LENGTH_SHORT).show();
}

}



checkSelfPermission

Permissionをチェックします


requestPermissions

Permissionのリクエストをします。このときダイアログが表示されます。


onRequestPermissionsResult

requestPermissionsの結果がコールバックされます。


実行

エミュレータで確認しました。(ちょいちょいフリーズしてツラかった)


リクエストダイアログ

Permissionのリクエストはこんな感じのダイアログが表示されます

スクリーンショット 2015-05-29 12.18.18.png


Settings

SettingsアプリのApps > 対象アプリ > PermissonsでPermissonの確認ができます。

スクリーンショット 2015-05-29 12.28.20.png