我正在尝试使用Intent.Action类。我知道如何使用ACTION_VIEW显示URL但我想在启动应用程序时使用Intent.ACTION_DIAL
来拨打电话号码。文档说您需要将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);
答案 0 :(得分:23)
String number = "23454568678";
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" +number));
startActivity(intent);
使用权限
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
答案 1 :(得分:16)
要打开拨号器应用程序(用户必须按拨号程序应用程序内的呼叫按钮;无需其他权限),请使用:
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);
答案 2 :(得分:3)
试试这个
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" />
答案 3 :(得分:3)
试试这个
Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+phno);
startActivity(intent);
Android Manifest
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
答案 4 :(得分:1)
试试这个
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>
答案 5 :(得分:1)
试试这个:
function replaceKeyValue(s, key, value) {
// Build a regular expression to match the key and its value
var re = new RegExp('(\\W)' + key + ':[^,]+');
// Replace the key with its new value
return s.replace(re, '$1' + key + ':' + value);
}
var s = "'[{key:10,key2:20}]'\r";
document.write(replaceKeyValue(s, 'key', 5)); // '[{key:5,key2:20}]'
答案 6 :(得分:1)
另一种方法是稍后调用 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));
答案 7 :(得分:0)
如果您已添加
<uses-permission android:name="android.permission.CALL_PHONE" />
检查手机上的电话是否适用于您的应用程序。
答案 8 :(得分: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);
}
});
}