如何在android中的ACTION_CALL之后回到我的应用程序

时间:2011-03-25 09:58:58

标签: android android-intent

我有一个关于意图行动ACTION_CALL的问题。

用户结束通话后返回自己的应用程序/活动的正确方法是什么?

Intent intent = new Intent(Intent.ACTION_CALL);
       intent.setData(Uri.parse("tel:" +m1));

startActivity(intent);

我使用上面的代码拨打了电话。请给我一个解决方案,在呼叫操作后调用我自己的活动。

3 个答案:

答案 0 :(得分:2)

不幸的是,有些手机有设置强制进入呼叫后的呼叫记录......

但是,您可以在startActivity检查TelephonyManager.getCallState之后运行循环,再次TelephonyManager.CALL_STATE_IDLE时,您可以重新启动自己的Activity

一定要在循环中添加一些睡眠

答案 1 :(得分:0)

在结束之后.......它只需要回到活动.. !!你可以处理那个onRestart();

答案 2 :(得分:0)

我遇到了同样的问题,最终解决了这个问题:

  1. 使用单个(或多个,如果需要)创建回调接口 方法
  2. 在您的活动中实施该界面
  3. 在PhoneStateListener类
  4. 中引用该接口
  5. 在通话结束时调用该界面中的方法
  6. public class CallTracker extends PhoneStateListener implements Runnable {
      private Context mActivity;
      private Callback mCallback;
    
      public interface Callback {
        void onCallEnded();
      }
    
      public CallTracker(Activity activity) {
        super();
        mActivity = activity;
    
        if (mActivity instanceof Callback) {
          mCallback = (Callback) mActivity;
        }
      }
    
      @Override public void onCallStateChanged(int state, String incomingNumber) {
        if (state == TelephonyManager.CALL_STATE_IDLE) {
             mCallback.onCallEnded();
        }
    }
    
    public class CallerActivity extends AppCompatActivity implements
        CallTracker.Callback {
    
        @Override public void onCallEnded() {
        Toast.makeText(this, "Call ended!", Toast.LENGTH_SHORT).show();
        }
    }