通过手动用户选择打开WhatsApp进行视频通话,无联系人权限

时间:2018-06-12 08:55:45

标签: android whatsapp

有很多关于WhatsApp呼叫/发送给特定用户的问题,该用户假定READ_CONTACTS权限。

我们的目标是从我们的应用顺利开通WhatsApp视频通话,无需在我们自己的应用中添加/要求任何通讯录权限,让用户手动添加或选择收件人用户

我似乎无法找到足够的信息来实现以下看似简单的方案之一。

  • 打开"新来电" ("选择联系人")活动,就像用户触及"手机+" FAB。 (下面的SECOND图片的活动。第一张图片是显示FAB。) 这就足够了,用户可以从那里添加联系人或从他们已经拥有的联系人之一发起视频呼叫。这就是我们所需要的,但我找不到相关信息。

enter image description here

enter image description here

  • 或者,打开WhatsApp在" Calls"上的定位标签(如上图第一张图片)

  • 如果没有找到任何相关信息,我尝试打开联系人选择器,获取所选用户,然后使用tha info 发起视频通话,但是:

    • 调用 WhatsApp自己的选择器,(使用操作Intent.ACTION_PICK和类别"com.whatsapp")我只会获得12354567@s.whatsapp.net形式的联系人字符串,我发现没有办法用来发起视频通话。所有答案都需要"content://com.android.contacts/data/" + id(联系人获取id,我们无法访问)。 intent.getData()返回null,似乎只有"联系"附加信息中的字符串。

    • 拨打默认联系人选择器,至少在某些手机上它没有提供直接添加联系人的方法(不可接受),并且仍然从中获取ID结果似乎不起作用。以下代码中的startActivity()不执行任何操作。

      protected void onActivityResult(int requestCode, int resultCode, Intent data)
      {
          if (requestCode == 1 && resultCode == RESULT_OK)
          {
              Uri result = data.getData();
      
              Cursor cursor = getContentResolver().query(result, null, null, null, null);
              if (cursor.moveToFirst())
              {
                  //int idx = cursor.getColumnIndex(ContactsContract.ContactsContacts._ID);
                  // String id = cursor.getString(idx);
                  long id = cursor.getLong(cursor.getColumnIndex(ContactsContract.Data._ID));
      
                  Intent sendIntent = new Intent();
                  sendIntent.setAction(Intent.ACTION_VIEW);
                  sendIntent.setDataAndType(
                      Uri.parse("content://com.android.contacts/data/" + id),
                      "vnd.android.cursor.item/vnd.com.whatsapp.voip.call");
                  sendIntent.setPackage("com.whatsapp");
                  startActivity(sendIntent);
              }
          }
      
          super.onActivityResult(requestCode, resultCode, data);
      }
      

0 个答案:

没有答案