Ich möchte einige Zahlen innerhalb eines Arrays aufrufen. Also habe ich sie in einen Loop gelegt und mit einer Absicht die Call App gestartet. Mit dem phonecalllistener gehe ich zurück zu meiner Aktivität, wenn der Anruf beendet ist, aber mein Problem ist, dass die Schleife von vorn beginnt und ich erneut auf die Schaltfläche klicke.rufen Sie eine Liste von Telefonnummern und gehen Sie zurück zu der Aktivität
Kann ich dieses Problem mit einem Bündel lösen? Und wie? Wie kann ich meinen Loopstatus speichern, wenn die Aktivität neu gestartet wird?
Ich habe auch die richtigen Berechtigungen im Manifest (CALL_PHONE und READ_PHONE_STATE) geschrieben
public class MainActivity extends Activity {
final Context context = this;
private Button button;
public int g = 0;
public String[] nummern = new String[10];
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.buttonCall);
nummern[0] = "tel:06746468156";
nummern[1] = "tel:06991046460";
nummern[2] = "tel:06504146464";
PhoneCallListener phoneListener = new PhoneCallListener();
TelephonyManager telephonyManager = (TelephonyManager) this
.getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
// add button listener
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
for (g = 0; g <= nummern.length-1; g++) {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse(nummern[g]));
startActivity(callIntent);
}
}
});
}
private class PhoneCallListener extends PhoneStateListener {
private boolean isPhoneCalling = false;
String LOG_TAG = "LOGGING 123";
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (TelephonyManager.CALL_STATE_RINGING == state) {
// phone ringing
Log.i(LOG_TAG, "RINGING, number: " + incomingNumber);
}
if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
// active
Log.i(LOG_TAG, "OFFHOOK");
isPhoneCalling = true;
}
if (TelephonyManager.CALL_STATE_IDLE == state) {
// run when class initial and phone call ended,
// need detect flag from CALL_STATE_OFFHOOK
Log.i(LOG_TAG, "IDLE");
if (isPhoneCalling) {
Log.i(LOG_TAG, "restart app");
// restart app
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(
getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
isPhoneCalling = false;
}
}
}
}
}
Juste speichern Sie Ihren Loop-Status, oder welche Telefonnummer wurden –
aufgerufen Wie kann ich meine Loopstate speichern, wenn die Aktivität neu gestartet wird? – Marco
Wenn ich Ihren Code richtig verstanden habe, starten Sie die App nach dem Anruf neu? warum tust du das ? Sie könnten einfach die nächste Nummer von dort anrufen, anstatt die App neu zu starten – JonasCz