10

我似乎缺乏有关处理此类意图的知识,但是暂时找不到答案。

我有一个片段的活动。该片段执行此代码以调用联系人:

private void onCall() {
    Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(contact.getBusinessPhone()));
    startActivity(intent);
}

还包括许可

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

输出是No Activity found to handle Intent,应用程序崩溃。

这是包含片段的活动的清单实现:

<activity android:name="activities.ContactActivity">            
    <intent-filter>
        <action android:name="android.intent.action.DIAL" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

我究竟做错了什么?我是否需要为此在清单中声明一些特殊活动?

4

2 回答 2

68

您不需要在清单中声明拨号意图过滤器,也不需要任何 ACTION_DIAL 权限。寻找我的实现

private void startDialActivity(String phone){
    Intent intent = new Intent(Intent.ACTION_DIAL);
    intent.setData(Uri.parse("tel:"+phone));
    startActivity(intent);
}

也很好检查设备是否支持电话

private boolean isTelephonyEnabled(){
    TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
    return telephonyManager != null && telephonyManager.getSimState()==TelephonyManager.SIM_STATE_READY;
}
于 2013-04-26T12:37:56.820 回答
9

Intent.ACTION_VIEW对我来说效果更好,因为在没有拨号器的平板电脑上它会自动切换到“添加到联系人”。

于 2015-03-19T17:35:53.883 回答