我正在通过一个包来调用一个活动号码
然后,在这样的活动中,我有一个按钮来调用该号码,这是代码:
callButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(bundle.getString("mobilePhone")));
}
});
出了点问题,因为当我按下按钮时没有任何反应......
我做错了什么?
PD:我正在使用Android 1.5兼容项目...也许电话与1.5不兼容?答案 0 :(得分:239)
你忘了打电话给startActivity。它应该是这样的:
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + bundle.getString("mobilePhone")));
context.startActivity(intent);
一个意图本身就是一个描述某事物的对象。它没有做任何事情。
不要忘记向清单添加相关权限:
<uses-permission android:name="android.permission.CALL_PHONE" />
答案 1 :(得分:20)
在我的手机上试过这个并且效果很好。
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:900..." ));
startActivity(intent);
在清单文件中添加此权限。
<uses-permission android:name="android.permission.CALL_PHONE" />
答案 2 :(得分:13)
Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+198+","+1+","+1));
startActivity(callIntent);
用于多个有序呼叫
这用于DTMF呼叫系统。 如果呼叫下降,那么你应该在数字之间传递更多“,”。
答案 3 :(得分:6)
在选定的答案中,没有检查棉花糖许可。 它不能直接在marshmallow 6.0或以上设备中使用。
我知道为时已晚,但这个问题投票很多,所以我认为将来对其他人有帮助。
在棉花糖设备中,我们需要获得运行时许可才能进行通话......
这是在棉花糖或以上的地方打电话的例子。
答案 4 :(得分:3)
看看那里:http://developer.android.com/guide/topics/intents/intents-filters.html
您是否更新了清单文件以获得通话权?
答案 5 :(得分:2)
在这里,我将向您展示如何通过您的活动拨打电话。要拨打电话,您必须在应用中记下此代码。
try {
Intent my_callIntent = new Intent(Intent.ACTION_CALL);
my_callIntent.setData(Uri.parse("tel:"+phn_no));
//here the word 'tel' is important for making a call...
startActivity(my_callIntent);
} catch (ActivityNotFoundException e) {
Toast.makeText(getApplicationContext(), "Error in your phone call"+e.getMessage(), Toast.LENGTH_LONG).show();
}
答案 6 :(得分:0)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button button = (Button) findViewById(R.id.btn_call);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String mobileNo = "123456789";
String uri = "tel:" + mobileNo.trim();
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(uri));
startActivity(intent);
}
});*
}
答案 7 :(得分:0)
如果有人在科特林寻找
val uri = "tel:"+800******
val call_customer_service = Intent(Intent.ACTION_CALL)
call_customer_service.setData(Uri.parse(uri))
startActivity(call_customer_service)
答案 8 :(得分:0)
这不需要许可。
val intent = Intent(Intent.ACTION_DIAL, Uri.parse("tel:+123456"))
startActivity(intent)
或
val intent = Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", "+123456", null))
startActivity(intent)
但是它又显示了一个对话框(询问您是只拨打一次还是始终打一次电话)。因此,最好在获得许可的情况下使用ACTION_CALL
(请参见Revoked permission android.permission.CALL_PHONE)。
答案 9 :(得分:0)
已解决..! 2020年9月5日。
效果很好。这样,您不需要用户的许可。您可以直接打开电话呼叫部分。
窍门,请使用 ACTION_DIAL 代替 ACTION_CALL 。
private void callPhoneNumber() {
String phone = "03131693169";
Intent callIntent = new Intent(Intent.ACTION_DIAL);
callIntent.setData(Uri.parse("tel:" + phone));
startActivity(callIntent);
}
更多问题,请在Instagram上问我: @canerkaseler
答案 10 :(得分:0)
如果您最终遇到SecurityException(并且该呼叫无法进行),则应考虑请求用户进行呼叫的权限,因为这被视为危险许可:
ActivityCompat.requestPermissions(
activity,
new String[] {Manifest.permission.CALL_PHONE},
1
);
请注意,这与清单许可无关(您也必须具有)