小编Arm*_*ong的帖子

如何通过单击按钮接听来电?

我正在尝试实现自己的电话处理UI.

我想要做的是,如果有来电,则会显示来电号码和图片,如果按下按钮,则会接听/接听来电.

相关代码是:

 @Override
  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    answerButton = (Button) findViewById(R.id.pickup);
    answerButton.setOnClickListener(new OnClickListener() {
        public void onClick(final View v) {
            Intent intent = new Intent("android.intent.action.ANSWER");
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);          
        }
    });
Run Code Online (Sandbox Code Playgroud)

可悲的是,代码不起作用.首先,如果按下我的答案按钮,则会抛出异常:

ActivityNotFoundException:找不到处理Intent的Activity {
act = android.intent.action.ANSWER

然后我在AndroidManifest.xml中添加了一个条目:

<uses-permission android:name="android.permission.CALL_PHONE" />
Run Code Online (Sandbox Code Playgroud)

我再次运行应用程序,不再有例外.但是,我怀疑来电是不是真的被接受了.因为如果按下Android的屏幕应答按钮(绿色按钮),则接受来电并且仿真器屏幕的左上角也会显示绿色通话图标,而我的应用则不会.

我还在android源码中阅读了Phone应用程序的源代码.在Phone类中有诸如acceptCall()之类的方法.但是这些代码对我来说似乎很难使用,因为代码中有许多导入声明,例如:

import com.android.internal.telephony.Call;
import com.android.internal.telephony.CallStateException;
import com.android.internal.telephony.CallerInfo;
import com.android.internal.telephony.CallerInfoAsyncQuery;
import com.android.internal.telephony.Connection;
import com.android.internal.telephony.MmiCode;
import com.android.internal.telephony.Phone;
Run Code Online (Sandbox Code Playgroud)

而且,如果我在代码中添加这些导入,则会出现太多错误,例如:
The import com.android.internal.telephony cannot be resolved.

什么是我的问题的正确和简单的方法?

android phone-call

9
推荐指数
1
解决办法
9474
查看次数

标签 统计

android ×1

phone-call ×1