gpt4 book ai didi

android - ACTION_CALL 无法正常工作

转载 作者:行者123 更新时间:2023-11-29 19:20:52 25 4
gpt4 key购买 nike

我想通过单击菜单中的按钮来调用电话。该操作有效,但不正确,因为当我单击按钮时会启动一个空白页面,当我单击后退按钮时,调用会开始!我没有找到错误,你能帮我吗?

这是我的代码:

/*Fare una telefonata*/
private void onCall() {
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE);

if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
this,
new String[]{Manifest.permission.CALL_PHONE},
123);
} else {
startActivity(new Intent(Intent.ACTION_CALL).setData(Uri.parse("tel:3314617839")));
}
}
/*Dopo il risulato della richiesta di permesso*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {

case 123:
if ((grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
onCall();
} else {
Log.d("TAG", "Call Permission Not Granted");
}
break;

default:
break;
}
}

按钮是:

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id=item.getItemId();
switch(id)
{
case R.id.ContConc:
onCall();

我在manifest上有权限,实际上调用开始了,但我觉得可能有些多余的东西,我真的不知道!

最佳答案

我强烈建议您使用 ACTION_DIAL,它将为您省去所有请求许可的事情:

public static void dialNumber(Context context, String number) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:" + number));
context.startActivity(intent);
}

但如果你真的想打电话,你将需要做更多的工作,除非你 targetSdkVersion 低于 23。对于 23 及更高版本,您需要实现 Permission handler .然后你可以使用这样的方法:

 public static void callNumber(Context context, String number){
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+ number));

if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
return;
}
context.startActivity(callIntent);
}

关于android - ACTION_CALL 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42518108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com