Ich möchte Anrufe regelmäßig zu Testzwecken machen/Empfangen von meiner android app programmatisch und sammelt Statistiken von meinem Netzwerk. Also ruft meine App immer wieder eine Nummer an und wenn der Anruf angenommen wird, beendet die App den Anruf nach ein paar Sekunden. Um damit zu beginnen, ist der Code, den ich verstanden habe, funktionieren würde. Es wählt und ruft die von mir angegebene Nummer an, ohne dass ich den Bildschirm berühren muss.Wie man einen Anruf programmatisch in android
public class MainActivity extends AppCompatActivity {
int MY_PERMISSIONS_REQUEST_CALL_PHONE = 101;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
call();
}
private void call() {
try {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:2125551212"));
System.out.println("====before startActivity====");
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CALL_PHONE},
MY_PERMISSIONS_REQUEST_CALL_PHONE);
return;
}
startActivity(callIntent);
System.out.println("=====getcallActivity==="+getCallingActivity());
} catch (ActivityNotFoundException e) {
Log.e("helloAndroid","Call failed",e);
}
}
}
Das Manifest enthält die folgende Zeile:
Gemäß meinem Verständnis ACTION_CALL sollte den Anruf an die Nummer stelle ich zur Verfügung gestellt haben, ohne die DIAL-Taste drücken zu müssen. Aber wirkt wie ACTION_DIAL, die die Zahl auf dem Bildschirm angezeigt und der Benutzer hat dann DIAL-Taste drücken, um den Anruf zu tätigen. Gibt es also keinen Unterschied zwischen ACTION_DIAL und ACTION_CALL?
Nachdem ich einige der Beiträge lesen Ich verstehe, dass 6.0 ab Erlaubnis braucht, ist vom Benutzer angefordert werden, um den Anruf zu wählen (was ich oben in meinem Code verwendet haben)
Meine Frage ist, wenn ich Lollipop verwenden (5.0) OS kann ich dann den Anruf tätigen, ohne zu wählen?
Vielen Dank. Es funktioniert super! Kann ich das als AsyncTask einrichten? –
Nicht klar, was Sie meinten, AsyncTask ist eine der einfachsten Möglichkeiten, um Parallelität in Android zu implementieren, ohne sich mit komplexeren Methoden wie Threads befassen zu müssen. Wenn Sie also parallel arbeiten wollen, können Sie es aber wählen oder anrufen Sie tun es auf dem UI-Thread, sonst wird es abstürzen.use onPostExecute, wenn Sie nach einem Prozess im Hintergrund Thread wählen möchten .. –