Android権限適合案(API 4+)
Android 6.0権限判断に参加し、もしあなたのプロジェクトbuildToolsVersionが23+であれば、権限を適切にしなければ、プログラムはクラッシュします.本稿では筆者の権限が適切な案を紹介する
まず私が使っているツールはgithub上の他の人がオープンソースのツールJavaで書き直したアイテムはkotlinで書いたもので、hotchemi(なぜ書き直すのか、小米は公式の権限判断とは少し違うので、hotchemi大神に小米携帯電話の特別判断を加えてほしいと頼みましたが、同意しませんでした.彼は日本の小米携帯電話がないのでテストできません.)の住所です.https://github.com/a1018875550/PermissionDispatcherこれはAPI 4+をサポートする良い権限適応ツールです.ほとんどの携帯電話で使用されており、私は小米の携帯電話の権限の判断に参加しましたが、6.0以上の小米の携帯電話でしか使用されていません.
ここで説明します.このツールはAndroid Studio 2.0+バージョンで使用しなければなりません.以前のバージョンでは不思議なバグが報告され、使用すると卵が痛いです.
インポート方法:プロジェクトのbuid.gradleファイルに追加
そしてModuleのbuild.gradleファイルに依存と属性構成を追加
ここのバージョンは具体的なバージョン番号と書くこともできます.具体的なバージョン番号の住所はここで見てください.
OK導入しました.このツールの使い方を紹介するには、まずこのツールに何があるかを紹介します.@RuntimePermissionsは、現在のactivityまたはfragment を登録する必要があります.@NeedsPermissionは必須で、権限が必要な方法に を追加します.@OnShowRationale注釈この権限が必要な理由を説明し、 が許可されているかどうかをユーザーに判断するように促す方法@OnPermissionDenied権限が拒否されたときに呼び出される @OnNeverAskAgainユーザーが再プロンプトをチェックしたときに呼び出す これがこの権限ツールのすべての機能の使用方法です.
Activity/fragmentに@RuntimePermissionsを追加し、権限が必要な方法に@NeedsPermissionを追加します.その他は必要に応じて追加します.後は必ずRebuildプロジェクトをクリックしてください
buildが完了したらonRequestPermissionsResultメソッドで追加
ここで
次に、その権限メソッドを呼び出す方法を説明します.
以上のように現在の
このように簡単に権限の適合を完成しました;次に、このツールに合わせて使用するASプラグインを紹介します.このツールを使用するのに便利なプラグインの名前は「PermissionsDispatcher plugin」と呼ばれます.activity/fragmentページalert+insert(windows)command+n(mac)で実行します.
最後にこのツールの原作者hotchemiに感謝します
まず私が使っているツールはgithub上の他の人がオープンソースのツールJavaで書き直したアイテムはkotlinで書いたもので、hotchemi(なぜ書き直すのか、小米は公式の権限判断とは少し違うので、hotchemi大神に小米携帯電話の特別判断を加えてほしいと頼みましたが、同意しませんでした.彼は日本の小米携帯電話がないのでテストできません.)の住所です.https://github.com/a1018875550/PermissionDispatcherこれはAPI 4+をサポートする良い権限適応ツールです.ほとんどの携帯電話で使用されており、私は小米の携帯電話の権限の判断に参加しましたが、6.0以上の小米の携帯電話でしか使用されていません.
ここで説明します.このツールはAndroid Studio 2.0+バージョンで使用しなければなりません.以前のバージョンでは不思議なバグが報告され、使用すると卵が痛いです.
インポート方法:プロジェクトのbuid.gradleファイルに追加
buildscript { dependencies { classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' }
}
そしてModuleのbuild.gradleファイルに依存と属性構成を追加
apply plugin: 'android-apt'
dependencies { compile 'org.jokar:permissiondispatcher:latest.version' apt 'org.jokar:permissiondispatcher-processor:latest.version' }
ここのバージョンは具体的なバージョン番号と書くこともできます.具体的なバージョン番号の住所はここで見てください.
OK導入しました.このツールの使い方を紹介するには、まずこのツールに何があるかを紹介します.
@RuntimePermissions
public class MainActivity extends AppCompatActivity {
@NeedsPermission(Manifest.permission.CAMERA)
void showCamera() {
getSupportFragmentManager().beginTransaction()
.replace(R.id.sample_content_fragment, CameraPreviewFragment.newInstance())
.addToBackStack("camera")
.commitAllowingStateLoss();
}
@OnShowRationale(Manifest.permission.CAMERA)
void showRationaleForCamera(PermissionRequest request) {
new AlertDialog.Builder(this)
.setMessage(R.string.permission_camera_rationale)
.setPositiveButton(R.string.button_allow, (dialog, button) -> request.proceed()) .setNegativeButton(R.string.button_deny, (dialog, button) -> request.cancel()) .show(); } @OnPermissionDenied(Manifest.permission.CAMERA) void showDeniedForCamera() { Toast.makeText(this, R.string.permission_camera_denied, Toast.LENGTH_SHORT).show(); } @OnNeverAskAgain(Manifest.permission.CAMERA) void showNeverAskForCamera() { Toast.makeText(this, R.string.permission_camera_neverask, Toast.LENGTH_SHORT).show(); } }
Activity/fragmentに@RuntimePermissionsを追加し、権限が必要な方法に@NeedsPermissionを追加します.その他は必要に応じて追加します.後は必ずRebuildプロジェクトをクリックしてください
buildが完了したらonRequestPermissionsResultメソッドで追加
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// NOTE: delegate the permission handling to generated method
MainActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults);
}
ここで
MainActivityPermissionsDispatcher
の命名規則は、現在のactivity/fragent+"PermissionsDispatcher";だから自分で書くときはMainActivity PermissionsDispatcherを無理に書かないでください.次に、その権限メソッドを呼び出す方法を説明します.
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button_camera).setOnClickListener(v -> { // NOTE: delegate the permission handling to generated method MainActivityPermissionsDispatcher.showCameraWithCheck(this); });
findViewById(R.id.button_contacts).setOnClickListener(v -> { // NOTE: delegate the permission handling to generated method MainActivityPermissionsDispatcher.showContactsWithCheck(this); });
}
以上のように現在の
activity/fragment +"PermissionsDispatcher"
.あなたが登録したメソッド名このように簡単に権限の適合を完成しました;次に、このツールに合わせて使用するASプラグインを紹介します.このツールを使用するのに便利なプラグインの名前は「PermissionsDispatcher plugin」と呼ばれます.activity/fragmentページalert+insert(windows)command+n(mac)で実行します.
最後にこのツールの原作者hotchemiに感謝します