【问题标题】:How to avoid complete action using dialog to read a contact or to do a call phone如何避免使用对话框读取联系人或拨打电话的完整操作
【发布时间】:2017-03-18 04:00:48
【问题描述】:

在我的应用程序中,我有一个按钮可以从联系人电话中选择一个联系人,还有一个按钮可以开始拨打该号码的电话。因此,当我单击按钮选择联系人时,会出现使用对话框的完整操作,其中包含更多可供选择的应用程序,以及当我单击按钮为通话电话加注星标时。如何避免访问联系人和直接拨打电话的对话框?

我的活动的部分代码:

contacts.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_PICK,  ContactsContract.Contacts.CONTENT_URI);
            startActivityForResult(intent, 0);
        }
});

start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {   
String numeroDiTelefono = dati.getString("numeroDiTelefono");
    Intent callIntent = new Intent(Intent.ACTION_CALL);
    callIntent.setData(Uri.parse("tel:" + numeroDiTelefono));
    callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(callIntent);
        }
});

【问题讨论】:

    标签: java android android-intent intentfilter


    【解决方案1】:

    确保您已在Manifest 文件中添加权限:

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

    Intent 所需要的只是:

    Intent callIntent = new Intent(Intent.ACTION_CALL);
    callIntent.setData(Uri.parse("tel:"+numeroDiTelefono));
    startActivity(callIntent);
    

    【讨论】:

    • 我已经这样做了,但是当我按下按钮时,我使用对话框获得了完整的操作。我不希望对话直接开始通话
    【解决方案2】:

    基本上,该对话框意味着您的手机上安装了多个联系人应用程序。当您调用任何类型的常见意图操作时,这是默认的 Android 系统行为。

    您可以做的是使意图更加具体到您正在寻找的应用程序。 通过指定 a) 具体数据uri b) 包名 c) 设置内容类型等

    也试试这个。

    Intent i = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
    startActivityForResult(i, PICK_CONTACT);
    

    【讨论】:

      【解决方案3】:
      public void onClick(View view) {
                  String number = String.valueOf(bundle.getLong("phone"));
                  Uri call = Uri.parse("tel:" + number);
                  Intent intent = new Intent(Intent.ACTION_DIAL, call);
                  startActivity(intent);
              }
      

      【讨论】:

      • 我已经这样做了,但是当我按下按钮时,我使用对话框获得了完整的操作。我不希望对话直接开始通话
      猜你喜欢
      • 2011-05-23
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多