2015-09-02 7 views
8

Ich benutze followoing Erlaubnis Anruf von meiner AnwendungSignatur von Android App von Native Berufung App programmatisch

< uses-permission android:name="android.permission.CALL_PHONE" /> 

Hier ist mein Code für die Herstellung von Anruf zu tätigen.

Intent iniCall=new Intent(Intent.ACTION_CALL); 
iniCall.setData(Uri.parse("tel:9849199291"); 
startActivity(iniCall); 

Aber es startet die Skype-Anwendung, anstatt Standard Calling Application zu starten.

Wie aus Standard-Anrufanwendung aufrufen?

+1

möglich Duplikat [wie Telefonanruf machen Absicht mit in android?] (http://stackoverflow.com/questions/4275678/how-to-make-phone-call-using-intent-in-android) –

+2

es startet die Skype-App, weil es die App ist, die der Benutzer gewählt hat die ** Standard App ** sein, um die aufrufende Aktion zu behandeln. – njzk2

Antwort

10

Für Pre-Lollipop Geräte müssen Sie com.android.phone als Paketname verwenden und in Lollipop müssen Sie com.android.server.telecom als Paketname verwenden.

Versuchen Sie diesen Code:

Intent iniCall=new Intent(Intent.ACTION_CALL); 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
    iniCall.setPackage("com.android.server.telecom"); 
}else{ 
    iniCall.setPackage("com.android.phone"); 
} 
iniCall.setData(Uri.parse("tel:"+9849199291); 
startActivity(iniCall); 

Ich hoffe, es hilft!

1

mainactivity Code:

button.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 
    String phnum = edittext.getText().toString(); 
    Intent callIntent = new Intent(Intent.ACTION_CALL); 
    callIntent.setData(Uri.parse("tel:" + phnum)); 
    startActivity(callIntent); 
    } 
    }); 

manifestieren:

<uses-permission android:name="android.permission.CALL_PHONE" /> 
-2

Ich weiß, es dumme Frage ist, aber das Gerät hat die SIM-Karte? Es sollte die Standardanwendung für das Ereignis "call" starten, das in den Einstellungen festgelegt werden kann. So gibt es 2 Optionen:

  1. Ihr Gerät hat keine SIM-Karte (Steckplatz), so dass die Telefon-App nicht angezeigt wird.
  2. Die Standard-App Ihres Geräts für den Anruf Intent ist Skype, daher werden Sie nicht zur Auswahl aufgefordert.
0

ich persönlich die Methode bevorzugen, die den Benutzer in die Wähltasten wie diese Wahl drücken keine Genehmigung erforderlich ist, sondern erfordert:

Uri uri = Uri.parse("tel:" + number); 
Intent callIntent = new Intent(Intent.ACTION_DIAL, uri); 
context.startActivity(callIntent); 
Verwandte Themen