2017-06-19 4 views
0

番号を呼び出そうとしていますが、許可チェックが偽であるため、メソッドは再実行され、何も得られません。私はアンドロイドのapi23で番号を呼び出すことはできません

コード方式:

public void call(String s) { 
    Intent callIntent = new Intent(Intent.ACTION_CALL); 
    callIntent.setData(Uri.parse("tel:"+s)); 
    if (ActivityCompat.checkSelfPermission(getBaseContext(),  Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
     System.out.println("fout bellen"); 
     return; 
    } 
    startActivity(callIntent); 
} 

それは私に(クリックリスナーに)System.out.printlnは "FOUT bellen" 私は私の相対的なレイアウトをクリックして、すべての時間を与えるには、

すべてのヘルプは大歓迎です。

+0

のようになりますか? – Peter

答えて

1

このような実行時アクセス権を要求する必要があります。

ActivityCompat.requestPermissions(
        this, 
        new String[]{Manifest.permission.CALL_PHONE}, 
        REQUEST_CALL_PHONE); 

だからあなたのコードは、例を与えることができ、この

private static final int REQUEST_PHONE_CALL = 1; 
public void call(String s) {  
    if (ActivityCompat.checkSelfPermission(getBaseContext(),  
     Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
     ActivityCompat.requestPermissions(
         this, 
         new String[]{Manifest.permission.CALL_PHONE}, 
         REQUEST_PHONE_CALL); 
       return; 
    } 
    Intent callIntent = new Intent(Intent.ACTION_CALL); 
    callIntent.setData(Uri.parse("tel:"+s)); 
    startActivity(callIntent); 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, 
             String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case REQUEST_PHONE_CALL : { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       Intent callIntent = new Intent(Intent.ACTION_CALL); 
       callIntent.setData(Uri.parse("tel:"+s)); 
       startActivity(callIntent); 
      } 
     } 
    } 
} 
+0

彼は "REQUEST_CALL_PHONE"を見つけません – Peter

+0

@Peter check updated Answer – Darish

+0

マニフェストに必要な権限を追加しましたか? – Darish

関連する問題