当我使用此代码时,首先是带有此编号的拨号盘屏幕。
Intent dialintnt = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:911"));
startActivityForResult(dialintnt, CALLING);
我不想要那个屏幕。当我点击按钮直接拨打该号码时,我希望这样。
那么如何拨打号码onclick
?
答案 0 :(得分:5)
这是不可能的。这是为了用户保护。
答案 1 :(得分:2)
已经很久了。但可能会帮助别人。 如果您想直接致电,则应使用requestPermissions方法。
1。将此行添加到您的清单文件中:
<uses-permission android:name="android.permission.CALL_PHONE" />
2. 在活动类中定义一个类变量:
private static Intent phoneCallIntent; //If use don't need a member variable is good to use a static variable for memory performance.
3. 将这些行添加到活动的 onCreate 方法中:
final String permissionToCall = Manifest.permission.CALL_PHONE;
//Assume that you have a phone icon.
(findViewById(R.id.menuBarPhone)).setOnClickListener(new OnClickListener(){
public void onClick(View view) {
phoneCallIntent = new Intent(Intent.ACTION_CALL);
phoneCallIntent.setData(Uri.parse(getString(R.string.callNumber))); //Uri.parse("tel:your number")
if (ActivityCompat.checkSelfPermission(MainFrame.this, permissionToCall) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainFrame.this, new String[]{permissionToCall}, 1);
return;
}
startActivity(phoneCallIntent);
}
});
4. 要点击允许按钮后立即拨打电话,请覆盖onRequestPermissionsResult方法:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults){
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == 1){
final int permissionsLength = permissions.length;
for (int i = 0; i < permissionsLength; i++) {
if(grantResults[i] == PackageManager.PERMISSION_GRANTED){
startActivity(phoneCallIntent);
}
}
}
当用户授予权限时,下次没有对话框,将直接拨打电话。
答案 2 :(得分:1)
请参阅answer
您需要为清单文件添加CALL_PHONE
和CALL_PRIVILEGED
权限。
然后可以使用以下方法调用该号码:
Uri callUri = Uri.parse("tel://911");
Intent callIntent = new Intent(Intent.ACTION_CALL,callUri);
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_USER_ACTION);
startActivity(callIntent);
答案 3 :(得分:0)
试试这个:
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" +phone_number));
startActivity(callIntent);
答案 4 :(得分:0)
只需将ACTION_DIAL
更改为ACTION_CALL
即可。
像这样:
Intent dialintnt = new Intent(Intent.ACTION_CALL,Uri.parse("tel:911"));
startActivityForResult(dialintnt, CALLING);
答案 5 :(得分:0)
数字必须采用正确的格式,就像您尝试使用国家/地区代码一样,它将带您使用默认的代号。当我直接使用198呼叫时,我在我的应用程序上对其进行了测试,当我使用9999999999时,它将调用dailer,以便用户可以通过添加国家/地区代码来更正号码。
`val intent = Intent(Intent.ACTION_CALL, Uri.parse("tel:+91987654310" ))
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
startActivity(intent)`