【问题标题】:Call Permission Not Working - How do you make a phone call in app for Android Studio?呼叫权限不起作用 - 如何在 Android Studio 的应用中拨打电话?
【发布时间】:2020-03-30 20:50:36
【问题描述】:
    public void onClick(View view) {

        if (view.getId() == R.id.button && ActivityCompat.checkSelfPermission(MainActivity.this,
                Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
            Log.d("STATE", "Call Button DOES NOT WORK");
            return;
        }
                Log.d("STATE", "Call Button DOES WORK");
                Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:480-240-9255"));
                startActivity(callIntent);

上面的代码一直在控制台中记录它不起作用,但我的清单文件中有 CALL_PHONE 的使用权限。我不确定我需要的任何其他权限,或者代码是否不正确?请帮忙,谢谢。

【问题讨论】:

  • 您需要申请权限,使用ActivityCompat.requestPermissions()

标签: java android phone-call


【解决方案1】:

所以,如果有权限就可以了,但是如果没有权限呢?

然后,您需要使用 requestPermissions() 请求权限

类似:-

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, requestCode)

然后,重写 onRequestPermissionsResult() 方法, 在授予权限后执行所需的操作(在这里您可以使用意图拨打电话来启动 Activity)。

所以你可以这样做:-

int requestCode = 0;
public void onClick(View view) 
{ 
if (view.getId() == R.id.button && ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED)
 { 
Log.d("STATE", "Call Button DOES NOT WORK"); 
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, requestCode);
return;
 }
 Log.d("STATE", "Call Button DOES WORK"); 
Intent callIntent = new Intent(Intent.ACTION_CALL);
 callIntent.setData(Uri.parse("tel:480-240-9255"));
 startActivity(callIntent);

}

那么,

@Override
 public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
if (requestCode == requestCode) 
{ 
if(grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
{ 
 Intent callIntent = new Intent(Intent.ACTION_CALL);
 callIntent.setData(Uri.parse("tel:480-240-9255"));
 startActivity(callIntent);
}
 }

因此,此代码将为用户提供一个弹出窗口,说明该设备是否有权拨打或接听电话。如果您授予权限,将启动呼叫管理器活动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-23
    • 2019-09-01
    • 1970-01-01
    • 2017-05-09
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多