我似乎缺乏处理此类意图的知识,但暂时无法找到答案。
我有一个片段的活动。片段执行此代码是为了调用联系人:
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>
我做错了什么?我是否需要在清单中声明一些特殊活动?
答案 0 :(得分:62)
您无需在清单中声明拨号intent-filter,也不需要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;
}
答案 1 :(得分:7)
Intent.ACTION_VIEW
对我来说效果更好,因为在没有拨号器的平板电脑上,它会自动切换到“添加到联系人”。