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ファイルに追加
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は、現在のactivityまたはfragment
  • を登録する必要があります.
  • @NeedsPermissionは必須で、権限が必要な方法に
  • を追加します.
  • @OnShowRationale注釈この権限が必要な理由を説明し、
  • が許可されているかどうかをユーザーに判断するように促す方法
  • @OnPermissionDenied権限が拒否されたときに呼び出される
  • @OnNeverAskAgainユーザーが再プロンプトをチェックしたときに呼び出す
  • これがこの権限ツールのすべての機能の使用方法です.
    @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に感謝します