如何在Android Pie及更高版本中以编程方式通过拨号器拨打电话

时间:2019-10-28 00:28:00

标签: android-9.0-pie android-phone-call telecom-manager

我使用此代码显示数字并在按下它进行拨号时显示它。它适用于Android Pie之前的android版本。

    final Button but= findViewById(R.id.buttond);
    but.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String PhNumber = "6998474783";////example number
            final CharSequence[] phones = PhNumber.split(" - ");
            AlertDialog.Builder builder = new AlertDialog.Builder(CTX);
            builder.setTitle("Επιλογή Τηλεφώνου");
            builder.setItems(phones, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int item) {
                    // Do something with the selection
                    Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phones[item].toString()));
                    if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {                           
                        return;                        }
                    startActivity(intent);                       
                }
            });
            AlertDialog alert = builder.create();
            alert.show();
        }
    });

要在Pie及以上版本上使用,我需要更改什么? 它显示了电话号码,但是当我按下它时,什么也没发生

1 个答案:

答案 0 :(得分:0)

在没有任何checkSelfPermission的情况下使用ACTION_DIAL解决。

  Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phones[item].toString()));
    startActivity(intent); 

如果还有其他方法,请与电信管理器一起发布。