(簡単にコーディング&分かりやすい)に許可し、要求の許可を確認する方法

または:

私はアンドロイドでランタイム許可を検索し、私は、リンクの多くを見つけることが、私は複雑なコードは、今日のように、そこにある参照してください。

注:それは新しい開発者やFrasherのために有用ですので、私はここに私の単純なコードを共有しています。また、私はここに任意のサードパーティのライブラリを使用していませんでした。

または:

まず第一に、で書き込み許可Manifestファイル(私はいくつかのbagic許可を取ります):

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

今私は2つのメソッドを作るcheckPermission()requestPermission()@Overrideひとつの方法名があるonRequestPermissionsResult()、これは結果の世話をします。

今、私はそれがどのように見えるかを紹介します:

private boolean checkPermission() {
        int internetPermission = ContextCompat.checkSelfPermission(getApplicationContext(), INTERNET);
        int cameraPermission = ContextCompat.checkSelfPermission(getApplicationContext(), CAMERA);
        int readStoragePermission = ContextCompat.checkSelfPermission(getApplicationContext(), READ_EXTERNAL_STORAGE);
        int writeStoragePermission = ContextCompat.checkSelfPermission(getApplicationContext(), WRITE_EXTERNAL_STORAGE);

        return internetPermission == PackageManager.PERMISSION_GRANTED &&
                cameraPermission == PackageManager.PERMISSION_GRANTED &&
                readStoragePermission == PackageManager.PERMISSION_GRANTED &&
                writeStoragePermission == PackageManager.PERMISSION_GRANTED;
    }

あなたはカメラが等...、INTERNETを定義している上記のコードで参照これは、クリックすることで、インポートでAlt+をEnterそして、それはコード以下を参照のような外観です。

import static android.Manifest.permission.CAMERA;
import static android.Manifest.permission.INTERNET;
import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;

今のコード下記参照してくださいrequestPermission()方法:

private void requestPermission() {
        ActivityCompat.requestPermissions(MainActivity.this, new String[]{INTERNET, CAMERA, READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE}, 1);
    }

今、最後の方法がありますonRequestPermissionsResult()この方法では、いずれかの権限が付与または拒否されて見ることができます。

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

        switch (requestCode) {

            case 1:
                if (grantResults.length > 0) {
                    boolean internet = grantResults[0] == PackageManager.PERMISSION_GRANTED;
                    boolean camera = grantResults[1] == PackageManager.PERMISSION_GRANTED;
                    boolean readStorage = grantResults[2] == PackageManager.PERMISSION_GRANTED;
                    boolean writeStorage = grantResults[3] == PackageManager.PERMISSION_GRANTED;

                    if (internet && camera && readStorage && writeStorage) {
                        init();
                       // Permission GRANTED (Here write your code what you want).
                    } else {
                        // Permission DENY (If user click on DENY then finish the activity);
                        finish();
                    }
                }
        }
    }

グレートあなたにcheckPermission&requestPermissionで行われます。

注意:

この上記のコードは、のために働いていますActivityフラグメントでマイナーな変更があります。

私はフラグメントにこのコードを使用している場合、私は何を変更する必要があります。

あなただけに変更するrequestPermission()方法:

private void requestPermission() {
            requestPermissions(new String[]{INTERNET, CAMERA, READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE}, 1);
        }

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=7669&siteId=1