eclipse witchを使用してアンドロイドアプリを作成したい場合は、ユーザーから電話番号を取得し、電話番号(インテントなどを使用)を返します。 (拒否、逃し、...)アンドロイドプログラミング:電話番号を呼び出して拒否された直後にアプリに戻る
私はインテントを使用して番号を呼び出す方法を知っていますが、このソリューションを処理する方法はわかりません(拒否された直後にアプリケーションに戻ります)または逃した)
eclipse witchを使用してアンドロイドアプリを作成したい場合は、ユーザーから電話番号を取得し、電話番号(インテントなどを使用)を返します。 (拒否、逃し、...)アンドロイドプログラミング:電話番号を呼び出して拒否された直後にアプリに戻る
私はインテントを使用して番号を呼び出す方法を知っていますが、このソリューションを処理する方法はわかりません(拒否された直後にアプリケーションに戻ります)または逃した)
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
public class PhoneCall {
public static final String PARAM_CALL_DONE = "CALL_DONE";
public static void call(String phoneNumber, Activity activity) {
CallEndedListener.createListenerFor(activity);
Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber));
activity.startActivity(callIntent);
}
private static class CallEndedListener extends PhoneStateListener {
private boolean called = false;
private final TelephonyManager telephonyManager;
private final Context context;
private Activity activity;
private CallEndedListener(Activity act) {
this.context = act.getBaseContext();
this.activity = act;
this.telephonyManager = (TelephonyManager) context
.getSystemService(Activity.TELEPHONY_SERVICE);
}
public static void createListenerFor(Activity act) {
CallEndedListener listener = new CallEndedListener(act);
listener.telephonyManager.listen(listener, LISTEN_CALL_STATE);
}
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (called && state == TelephonyManager.CALL_STATE_IDLE) {
called = false;
telephonyManager.listen(this, PhoneStateListener.LISTEN_NONE);
try {
Intent t = new Intent(context, activity.getClass());
t.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
t.putExtras(activity.getIntent());
t.putExtra(PARAM_CALL_DONE, true);
t.setAction(Intent.ACTION_MAIN);
activity.finish();
activity = null;
context.startActivity(t);
} catch (Exception e) {
e.printStackTrace();
}
} else {
if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
called = true;
}
}
}
}
}
パラメータ "PARAM_CALL_DONE"を渡すことで、呼び出し側アクティビティは、開始/再開されたかどうかをテストできます電話の後に。
@Override
protected void onResume() {
if (extras.getBoolean(PhoneCall.PARAM_CALL_DONE)) {
showInfoText(); // do whatever you like here...
extras.remove(PhoneCall.PARAM_CALL_DONE);
}
}
マニフェストファイルにパーミッションを追加することを忘れないでください。次のようなonResume()メソッドでテストしてください。 「PHONENUMBERは」文字列のように電話番号であることと
PhoneCall.call(phonenumber, this);
誰かの前にこれを尋ねたActivityから呼び出されると
電話を使用するためには、本当に簡単なメソッド呼び出しが十分なものでなければなりません、このリンク: https://stackoverflow.com/a/13438493/4226541 これはあなたにとって良いはずです – ad3luc