2016-05-16 15 views
1

So fordern Sie eine Permitson? Ich habe versucht, dcumentation, aber die Konstante int Request-Code MY_PERMISSIONS_REQUEST_CALL_PHONE scheint nur zu funktionieren, noch etwas zu beachten für Rückwärtskompatibilität?Android Permisson Request Code Problem

ActivityCompat.requestPermissions(getApplicationContext(), 
          new String[]{Manifest.permission.READ_CONTACTS}, 
          MY_PERMISSIONS_REQUEST_CALL_PHONE); 

Wie MY_PERMISSIONS_REQUEST_CALL_PHONE Konstante int zu deklarieren?

+0

Vielleicht ist dies für Sie nützlich sein, http://stackoverflow.com/a/36787464/3436179 – Alexander

+0

dieses ref überprüfen: http://www.tutorialspoint.com/android/android_phone_calls.htm –

Antwort

4

Für niedrigere Versionen benötigen Sie die Berechtigung in einem offenkundigen nur zu erklären, aber für marsh müssen Sie es in den Code geben, wo Sie den Code ausführen möchten.

Hier möchten Sie einen Anruf tätigen. Fügen Sie den unten angegebenen Code in den Codeblock ein, der für den Aufruf geschrieben wurde.

public void makeCall() 
    { 
     Intent intent = new Intent(Intent.ACTION_CALL); 
     intent.setData(Uri.parse("tel:" + "123456")); 
     int result = ContextCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE); 
     if (result == PackageManager.PERMISSION_GRANTED){ 

      startActivity(intent); 

     } else { 

      requestForCallPermission(); 
     } 
    } 

    private void requestPermission() 
    { 

     if (ActivityCompat.shouldShowRequestPermissionRationale(activity,Manifest.permission.CALL_PHONE)) 
     { 
     } 
     else { 

      ActivityCompat.requestPermissions(activity,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},PERMISSION_REQUEST_CODE); 
     } 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) 
    { 
    switch (requestCode) { 
     case PERMISSION_REQUEST_CODE: 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       makeCall(); 
      } 
      break; 
     } 
    } 
+0

Ja, ich verstehe das, aber wie delcare PERMISSION_REQUEST_CODE – ueen

+1

Sorry, ich habe vergessen, Sie darüber zu informieren, müssen Sie es oben wie unten deklarieren private statische final int PERMISSION_REQUEST_CODE = 1; – Vickyexpert

+0

Und ändern Sie auch die Berechtigung in requestPermission() -Methode an anderen Teil von CALL_PHONE anstelle von ACCESS_FINE_LOCATION – Vickyexpert

0
  if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
       // TODO: Consider calling 
       // ActivityCompat#requestPermissions 
       // here to request the missing permissions, and then overriding 
       // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
       //           int[] grantResults) 
       // to handle the case where the user grants the permission. See the documentation 
       // for ActivityCompat#requestPermissions for more details. 
       return; 
      } 
Intent intent = new Intent(Intent.ACTION_CALL); 
      intent.setData(Uri.parse("tel:" + "123456")); 
      startActivity(intent); 

Versuchen Sie, dies zu tun.

+0

Dank fing es an arbeite ich denke, ich habe die startActivity in der wenn vorher :) – ueen

+0

Ja, das war das einzige Problem. Lerne weiter. :) –

0

Versuchen Sie unter Code hoffe, es wird Ihnen helfen. Zuerst werden Sie gefragt, ob Sie ein Popup-Fenster haben, nachdem Sie die Nummer gewählt haben.

if (ContextCompat.checkSelfPermission(HomePanelActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
      if (ActivityCompat.shouldShowRequestPermissionRationale(HomePanelActivity.this, 
        Manifest.permission.CALL_PHONE)) { 
       ActivityCompat.requestPermissions(HomePanelActivity.this, new String[]{Manifest.permission.CALL_PHONE}, REQUEST_PERMISSION); 
      } 
     } else { 
      Intent callIntent = new Intent(Intent.ACTION_CALL); 
      callIntent.setData(Uri.parse("tel:" + phoneNumber)); 
      if (ActivityCompat.checkSelfPermission(HomePanelActivity.this, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) { 
       startActivity(callIntent); 
      } 
     } 

@Override 
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
     switch (requestCode) { 
      case 10: 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        Intent callIntent = new Intent(Intent.ACTION_CALL); 
        callIntent.setData(Uri.parse("tel:" + phoneNumberToCall)); 
        if (ActivityCompat.checkSelfPermission(HomePanelActivity.this, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) { 
         startActivity(callIntent); 
        } 
       } else { 
        Snackbar.make(drawerLayout, "You Deny permission", Snackbar.LENGTH_SHORT).show(); 
       return; 
      } 
     } 
    }; 
+0

Ich benötige das Permits beim Start und mache den Anruf bei Klick auf. Und ich brauche die Erlaubnis so zu leugnen ist keine Option ... – ueen

+0

Diese Requiers API23 meine App ist MinSDK 15 – ueen

+0

ja Sie benötigt kompilieren SDK-Version bis 23. Min 15 würde funktionieren. –

6
public void makeCall(String s) 
{ 
    Intent intent = new Intent(Intent.ACTION_CALL); 
    intent.setData(Uri.parse("tel:" + s)); 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){ 

     requestForCallPermission(); 

    } else { 
     startActivity(intent); 

    } 
} 
public void requestForCallPermission() 
{ 

    if (ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.CALL_PHONE)) 
    { 
    } 
    else { 

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

@Override 
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) 
{ 
    switch (requestCode) { 
     case PERMISSION_REQUEST_CODE: 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       makeCall("100"); 
      } 
      break; 
    } 
} 

// Nun rufen die Methode makecall ("your_desire_phone_numder"); makeCall ("100"); Link for more details