找不到处理Intent的活动{act = android.intent.action.DIAL}

时间:2015-08-28 05:32:47

标签: android android-intent

我想打开手机拨号器。但它显示错误。我在Android Manifest上声明了CALL_PHONE的权限,并在Android Manifest中声明了类。

case R.id.action_call:
Log.d("Action_call","INside Action call");
Intent dialer = new Intent(Intent.ACTION_DIAL);
startActivity(dialer);
return true;

3 个答案:

答案 0 :(得分:2)

ACTION_DIAL Intent不需要任何权限。因此,请从CALL_PHONE移除AndroidManifest.xml权限。

您没有传递任何号码来拨打Intent。

使用tel:后跟电话号码作为传递给Uri.parse()的值:

试试这段代码。

 String number = "1234567890";
 Uri number = Uri.parse("tel:" + number);
 Intent dial = new Intent(Intent.ACTION_DIAL);
 dial.setData(number);
 startActivity(dial);

修改

您可以先检查设备是否支持电话

private boolean isTelephonyEnabled(){
    TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
    return tm != null && tm.getSimState()==TelephonyManager.SIM_STATE_READY
}

我希望它有所帮助!

答案 1 :(得分:1)

使用'frontend'解析数字..

Uri

答案 2 :(得分:0)

  • 使用try / catch。
  • 使用Uri解析数字。
  • 不需要ACTION_DIAL意图的任何权限。

    try{
        Intent call_intent = new Intent(Intent.ACTION_DIAL);
        call_intent.setData(Uri.parse("tel:"+phone_number));
        startActivity(call_intent);
    }catch(Exception e){
    }