【问题标题】:how do I make a call Directly when open my contact打开我的联系人时如何直接拨打电话
【发布时间】:2019-06-14 05:59:18
【问题描述】:

当我点击按钮选择联系人选择联系人不拨打号码时的问题,我想在选择号码时直接拨打电话

buttoncontact = findViewById(R.id.choosecontact);


public void choosecontact1 (View view){

     Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);

   intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
    startActivityForResult(intent, PICK_CONTACT)


}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    String call = buttoncontact.getText().toString();


    if ((requestCode == 1) && (resultCode == RESULT_OK)) {
        Cursor cursor = null;
        try {
            Uri uri = data.getData();
            cursor = getContentResolver().query(uri, new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER }, null, null, null);
            if (cursor != null && cursor.moveToNext()) {
                String phone = cursor.getString(0);

// 该代码的问题

                Intent intent = new Intent(Intent.ACTION_CALL);
                intent.setData(Uri.parse(String.valueOf("tel:" + CONTENT_TYPE)));

//我要打开手机联系人直接拨打电话

                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                    // TODO: Consider calling
                    //    ActivityCompat#requestPermissions
                    // here to request the missing permissions, and then overriding
                    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                    //                                          int[] grantResults)
                    // to handle the case where the user grants the permission. See the documentation
                    // for ActivityCompat#requestPermissions for more details.


                    return;

                }

                startActivity(intent);

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

【问题讨论】:

    标签: java android apk call contacts


    【解决方案1】:

    什么是“CONTENT_TYPE”?不应该是刚刚得到的电话串吗?

    intent.setData(Uri.parse("tel:" + phone));
    

    【讨论】:

    • 是的,我放了它并尝试了很多次,但没有任何工作仍然像普通代码一样工作
    【解决方案2】:
    1. 在清单文件中添加权限:

    2. 制作拨打电话号码的功能

      私有静态最终 int CALL_REQUEST = 100;

       private void callPhoneNumber(){
              if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
              {
                  if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                     ActivityCompat.requestPermissions(ProfileActivity.this, new String[]{Manifest.permission.CALL_PHONE}, CALL_REQUEST);
      
                      return;
                  }
              }
      
              Intent callIntent = new Intent(Intent.ACTION_CALL);
              callIntent.setData(Uri.parse("tel:9879879879" ));
              startActivity(callIntent);
      
          }
      
    3. api level 23以上,调用时需要询问runtime权限,如果用户允许,会进入下面的方法:

      @覆盖 public void onRequestPermissionsResult(int requestCode, String[] 权限, int[] 授予结果) { 如果(请求代码 == CALL_REQUEST) { 如果(grantResults[0] == PackageManager.PERMISSION_GRANTED) { 电话号码(); } 别的 { Toast.makeText(ProfileActivity.this, "权限被拒绝", Toast.LENGTH_SHORT).show(); } } }

    【讨论】:

    • 您现在可以查看@BaselBeso
    • 好的,该代码适用于 Permission call 是的,但我的问题是当我点击任何联系人号码时选择按钮选择contact1 仍然不想打电话,但您的 Permission 代码工作正常
    • 您可以通过点击按钮将“9879879879”替换为您的联系电话。
    猜你喜欢
    • 2012-02-09
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    相关资源
    最近更新 更多