2016-07-06 19 views
0

私はアプリケーションでランタイムアクセス許可を実装していますが、CALL_PHONEのアクセス許可を表示できません。 read_contactとcall_phoneという2つのアクセス許可を表示する必要があります。私は完全にread_contactを表示できますが、call_phoneの許可は表示できません。実行時アクセス許可でManifest.permission.CALL_PHONEを表示できません

私はそれをテストするためにAVDエミュレータを使用しています。

いくつかのヘルプはapreciateされます!

これは私のコードです:

 callPesmission.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       requestCallPhonePermission(); 
      } 
     }); 

     contactPesmission.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       requestContactsPermission(); 
      } 
     }); 


private void requestContactsPermission() { 
     String locationPermission = Manifest.permission.READ_CONTACTS; 
     int hasPermission = ContextCompat.checkSelfPermission(getActivity(), locationPermission); 
     String[] permissions = new String[] { locationPermission }; 
     if (hasPermission != PackageManager.PERMISSION_GRANTED) { 
      requestPermissions(permissions, REQUEST_CONTACTS); 
     } else { 
      Toast.makeText(getActivity(), "We already have persmission", Toast.LENGTH_SHORT).show(); 
     } 
    } 

    private void requestCallPhonePermission() { 
     String callPermission = Manifest.permission.CALL_PHONE; 
     int hasPermission = ContextCompat.checkSelfPermission(getActivity(), callPermission); 
     String[] permissions = new String[] { callPermission }; 
     if (hasPermission != PackageManager.PERMISSION_GRANTED) { 
      requestPermissions(permissions, REQUEST_CALL_PHONE); 
     } else { 
      Toast.makeText(getActivity(), "We already have persmission", Toast.LENGTH_SHORT).show(); 
     } 
    } 

@Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     switch (requestCode) { 
      case REQUEST_CONTACTS: 
       if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        Toast.makeText(getActivity(), "READ_CONTACTS GRANTED", Toast.LENGTH_SHORT).show(); 
       } else { 
        Toast.makeText(getActivity(), "READ_CONTACTS DENIED", Toast.LENGTH_SHORT).show(); 
       } 
       break; 
      case REQUEST_CALL_PHONE: 
       if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        Toast.makeText(getActivity(), "CALL_PHONE GRANTED", Toast.LENGTH_SHORT).show(); 
       } else { 
        Toast.makeText(getActivity(), "CALL_PHONE DENIED", Toast.LENGTH_SHORT).show(); 
       } 
       break; 
      default: 
       super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     } 
    } 

答えて

2

.....マニフェストにパーミッションを追加するのを忘れ、私は

、右があなたのコードと間違って何も見えません

manifest.xmlに実際に存在するかどうかを確認します。

ダイアログがマニフェストにその存在しない場合は表示されませんし、私たちは

+0

とにかく機能を使用しようとすると、セキュリティ例外がスローされることがありますが、あなた自身の答えを見た:)私たちの最高に起こる:)ランタイム権限をすることができ痛み – Kushan

+0

はい、絶対に同意します –

1

私は

<uses-permission android:name="android.permission.CALL_PHONE" /> 
関連する問題