无法在android中执行Touch To Call功能

时间:2017-11-20 12:17:01

标签: android android-linearlayout phone-call android-relativelayout

我已经实施了“触摸来电话”'我的应用程序中的功能,我有3个按钮,我可以通过单击按钮直接拨打电话。我拨打了100,101,112个号码。该代码完美地适用于100和101,但是当我点击112按钮然后它会将我引导到键盘屏幕,在那里我可以拨打电话而不是直接拨打电话。这只发生在112号。我只是厌倦了这个。请帮忙。

相同的代码

       @Override
public void onClick(View view) {

    switch (view.getId()) {

        case R.id.imgBell112:
            checkCallPermission("112");
            break;

    }
}


public void checkCallPermission(String mobile) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
            {
                Intent intent = new Intent(Intent.ACTION_CALL);
                intent.setData(Uri.parse("tel:" + mobile));
                startActivity(intent);
            }
        } else {
            if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.CALL_PHONE)) {
                Toast.makeText(getActivity(), getResources().getString(R.string.kentoren_office_details_msg), Toast.LENGTH_LONG).show();
            }
            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CALL_PHONE}, CALL_REQUEST);
        }
    } else {
        Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:" + mobile));
        startActivity(intent);

    }
}

2 个答案:

答案 0 :(得分:1)

这可能是因为112在某些国家/地区(例如德国)是紧急号码,并且它们会阻止“直接呼叫”。这些数字。您可以使用数字911验证。

答案 1 :(得分:0)

您需要在清单

中授予紧急号码清单权限CALL_PRIVILEGED的权限

像这样拨号

Uri uri = Uri.parse("tel://911");
Intent dialIntent = new Intent(Intent.ACTION_CALL,uri);
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_USER_ACTION);
startActivity(dialIntent);

希望对你有用!