12

我正在尝试使用 Intent.Action 类。我知道如何使用 ACTION_VIEW 来显示 URL,但我想Intent.ACTION_DIAL在应用程序启动时使用 to call number。文档说您需要将 URI 解析为字符串,然后将其添加到 Intent 我试过这个:

Uri call = Uri.parse("7777777777");             
Intent surf = new Intent(Intent.ACTION_DIAL, call); 
startActivity(surf);

这不起作用我收到一条错误消息:

不幸的是,Project 已停止。我试图调试代码,它似乎指向我的意图线,如果我只是这样做,我不确定我做错了什么,它可以工作并调出拨号器。

//Uri call = Uri.parse("7777777777");               
Intent surf = new Intent(Intent.ACTION_DIAL);   
startActivity(surf);
4

9 回答 9

25

tel

String number = "23454568678";
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" +number));
startActivity(intent);

Use Permission

<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>   
于 2013-04-05T20:27:08.603 回答
18

只需打开拨号器应用程序(用户必须按下拨号器应用程序内的通话按钮;不需要额外的权限)使用:

String number = "7777777777";
Uri call = Uri.parse("tel:" + number);             
Intent surf = new Intent(Intent.ACTION_DIAL, call); 
startActivity(surf);

要打开拨号器应用程序并自动拨打电话(需要 android.permission.CALL_PHONE),请使用:

String number = "7777777777";
Uri call = Uri.parse("tel:" + number);             
Intent surf = new Intent(Intent.ACTION_CALL, call); 
startActivity(surf);
于 2014-12-17T09:46:56.130 回答
4

尝试这个

String url="tel:777777777"
if (url.startsWith("tel:")) { 
  Intent intent = new Intent(Intent.ACTION_DIAL,
  Uri.parse(url)); 
  startActivity(intent);
}

将此添加到您的 AndroidManifest.xml 文件中

<uses-permission android:name="android.permission.CALL_PHONE" />
于 2015-01-03T11:56:15.887 回答
4

也试试这个

Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+phno);
startActivity(intent);

安卓清单

<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
于 2015-01-03T12:27:56.553 回答
2

尝试这个

String no = "536171839";
Intent callintent = new Intent(android.intent.action.CALL);
callintent.setData(Uri.parse("tel:" +no));
startActivity(callintent);

将此添加到您的 AndroidManifest.xml 文件中

 <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
于 2014-03-17T08:58:28.920 回答
2

另一种方法是使PendingIntent稍后调用。当您想将用户直接从通知操作重定向到电话呼叫时,这是特别有用的。

String number = "551191111113";
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" +number));
PendingIntent pendingIntentForCall = PendingIntent.getActivity(mContext, 0 /* Request code */, intent,PendingIntent.FLAG_ONE_SHOT);

您可以在通知中使用它,如下所示:

        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(mContext)
                .setContentTitle(title)
                .setContentText(message)
                .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
                .setTicker(tickerText)
                .setColor(Color.BLACK)
                .setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.ic_directions_bus_white_48dp))
                .setSmallIcon(R.mipmap.ic_directions_bus_white_24dp)
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .addAction(new NotificationCompat.Action(R.mipmap.ic_directions_bus_white_24dp,"Call to " + number,pendingIntentForCall));
于 2016-06-18T14:54:48.703 回答
2

尝试这个 :

String toCall = "tel:" + number.getText().toString();

startActivity(new Intent(Intent.ACTION_DIAL,

Uri.parse(toCall)));
于 2015-08-12T13:21:02.807 回答
1

如果你添加了

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

检查您的应用程序的电话呼叫权限。

于 2016-03-30T06:40:32.350 回答
0

对于 ACTION_DIAL,您只需要创建 Intent 对象,将该操作作为第一个参数,将 Uri 对象作为第二个参数,该参数由写为字符串的电话号码构建。之后只需调用startActivity()方法并将先前创建的意图对象作为参数传递。例如:

private String phoneNumber = "123456";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button dial_number = findViewById(R.id.button);
    dial_number.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phoneNumber));
            startActivity(intent);
        }
    });
}
于 2018-12-23T23:20:01.977 回答