`
fokman
  • 浏览: 238852 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

在自己的android应用中调用打电话实现

阅读更多

    最近在做一个项目,需要在自己写的应用中调用打电话给别人的功能,不用多说。直接把代码贴出来。

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;
                }
            }
        }
    }
}

 代码就不详细解释了,大家可以参照ADK API查看。O(∩_∩)O~~~~~~

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics