0

したがって、 requestContactPermission メソッドを呼び出すと、ダイアログは正常に表示されますが、許可ボタンをクリックすると、フラグメントが閉じられ、アクティビティが強制的に再作成されますか? 問題に見えるのは ?ログには何も表示されません

   private void requestContactPermission() {

        if (shouldShowRequestPermissionRationale(Manifest.permission.READ_CONTACTS)) {
            getLoaderManager().initLoader(0, null, this);
        } else {
            requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
                    101);
        }

    }
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch (requestCode) {
            case 101:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    getLoaderManager().initLoader(0, null, this);
                }
                break;
        }
    }

私の主な問題は、エミュレーターでテストすると正常に動作することですが、Galaxy S7 edge などの実際のデバイスでテストすると、この問題が発生します。

4

1 に答える 1

0

これを試してみてください。

 if (ContextCompat.checkSelfPermission(getActivity(),
                Manifest.permission.READ_CONTACTS)
                != PackageManager.PERMISSION_GRANTED) {
            Log.d(TAG, "Requesting Runtime Permission Read contact");

            ActivityCompat.requestPermissions(getActivity(),
                    new String[]{Manifest.permission.READ_CONTACTS},
                    101);
        } else {

      Log.d(TAG, "Previously User have provided Read contact access");

        }


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

        switch (requestCode) {

            case 101: {
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                    Log.d(TAG, "Write External Storage Access granted");

                    downloadCurrentImage();

                    // permission was granted, yay! Do the
                    // contacts-related task you need to do.

                } else {


                    // permission denied, boo! Disable the
                    // functionality that depends on this permission.
                }
            }

            // other 'case' lines to check for other
            // permissions this app might request
        }
    }
于 2016-06-03T04:56:04.820 に答える