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

标签 android phone-call

我正在尝试实现我自己的电话调用处理 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);          
        }
    });

遗憾的是,代码不起作用。起初,如果我按下我的回答按钮,则会抛出异常:

ActivityNotFoundException: No Activity found to handle Intent {
act=android.intent.action.ANSWER

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

<uses-permission android:name="android.permission.CALL_PHONE" />

我再次运行应用程序,没有异常了。但是,我怀疑来电没有真正被接受。因为如果按下 Android 的屏幕接听按钮(绿色按钮),来电将被接听,并且模拟器屏幕的左上角也会显示绿色的通话中图标,而我的应用程序不会。

我还阅读了 Android 源中电话应用程序的源代码。 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;

而且,如果我在我的代码中添加这些导入,将会出现太多错误,例如:
导入 com.android.internal.telephony 无法解析

解决我的问题的正确且简单的方法是什么?

最佳答案

添加类别“android.intent.category.DEFAULT”(Intent.CATEGORY_DEFAULT)

关于android - 如何通过单击按钮接听来电?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779991/

相关文章:

android - 是否可以在通话中以编程方式在拨号器上调用号码……?

android - phonestatelistener 未被调用用于 sim 插槽 2

android - 如何使用 Android 在通话中播放声音?

java - 下载完成后自动打开文件PDF

android - 从服务器检索图像的可能方法

android - 如何知道android中的Intent.ACTION_SEND中选择了哪个 Intent

android - 未生成 RealmProxy 文件

java - 无法启动 Activity ComponentInfo{project} java.lang.IndexOutOfBoundsException : Index:

android - 统计呼出电话数(2.2以上)

android - 为什么我不能使用 Uri 类进行调用?