【问题标题】:i tried to make a phone call when pressing on call buttom but it does nothing我试图在按下通话按钮时拨打电话,但它什么也没做
【发布时间】:2018-01-23 22:28:33
【问题描述】:

我在按下通话按钮时尝试拨打电话,但它什么也没做

    call.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent callIntent = new Intent(Intent.ACTION_CALL);
            callIntent.setData(Uri.parse(getIntent().getExtras().getString("number")));


            if (ActivityCompat.checkSelfPermission
                    (PreviewActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {

                return;
            }
            startActivity(callIntent);>
        }
    });

这在mainfist中:

    <uses-permission android:name="android.permission.CALL_PHONE" />

【问题讨论】:

  • 由于android.permission.CALL_PHONE是一个危险权限,如果设备运行Android 6.0或更高版本,并且您的应用的目标SDK为23或更高版本,您需要在运行时询问此权限。

标签: android android-intent implicit


【解决方案1】:

在 setData 中你遗漏了一些东西 "tel:" 我希望你正在解析一个实数。此外,您是否已经请求允许拨打电话?

编辑!

Intent callIntent;
private void makePhoneCall () {
    String mPhoneNumber = getString(R.string.phonecall);
    callIntent = new Intent(Intent.ACTION_CALL);
    callIntent.setData(Uri.parse("tel:" + mPhoneNumber));
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
        startActivity(callIntent);
    } else {
        ActivityCompat.requestPermissions(this,
                new String[]{Manifest.permission.CALL_PHONE},
                1);

    }
}

@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case 1: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                makePhoneCall();
                // or
                startActivity(callIntent);

            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}

【讨论】:

  • 我已经添加了tell,但没有任何反应,我没有要求permession使用电话
  • 如果您尚未请求许可,您的代码应该类似于 the.se
猜你喜欢
  • 2017-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-21
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多