在新的Hangouts Android应用intent启动谷歌的Hangouts(Start Goo

2019-09-03 13:26发布

这里有关于来自于Android的意图开始一个谷歌的Hangouts以前的讨论: 开始在谷歌Android的Hangouts

我如何能在Android中启动一个谷歌的Hangouts与意图是什么?

得出的结论是,这是不可能的。 它这里是一个要求增强: https://code.google.com/p/google-plus-platform/issues/detail?id=385

不过,昨日谷歌发布了新的Hangouts应用程式,一套新的意图的。 已经开始通过意图视频群聊,现在可能吗?

我已经取得了部分成功与action=android.intent.action.VIEWdata=content://plus.google.com/hangouts

不过,我想传递的人我要调用的名称或ID - 收件人姓名。 我不知道这一点。

新的基于浏览器的应用程序的视频群聊开始与一个URL这样的视频群聊:

https://plus.google.com/hangouts/_/CONVERSATION/[26-character ID]?hl=en_US&hscid=[19-digit ID]&hpe=[14-character value]&hpn=[Google+ Name of Recipient]&hnc=0&hs=41.

我认为不是所有的参数都需要启动一个聚会,但我不能破译如何在意图通过收件人的姓名。

有什么想法吗? 谢谢。

Answer 1:

所以,我不知道如果这能帮助别人,因为我主要是寻找火了使用塔斯克的意图。 如果你进入的Google+>设置>你可以勾选“保持接触最新的”,它会一些新的动作加入到当你点击在Android的用户出现卡。 然后你可以使用意图拦截阅读未来通过的值。 这是我的了:

ACTION: android.intent.action.VIEW
DATA: content://com.android.contacts/data/5555
TYPE: vnd.android.cursor.item/vnd.googleplus.profile.comm

FLAGS:
FLAG_ACTIVITY_FORWARD_RESULT
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
FLAG_ACTIVITY_PREVIOUS_IS_TOP

1 ACTIVITIES MATCH THIS INTENT:
Hangouts (com.google.android.talk - com.google.android.apps.babel.phone.BabelProfileActionActivity)

我能够使用前三个值正常打开与该联系人的对话。 很显然,在你的数据字段的数量将根据接触改变。 您可以使用的伎俩,意图拦截,或者如果你有根,你可以使用类似的SQLite调试破解的联系人数据库打开数据表和下面的语句找出MIMETYPE_ID = 16和DATA4 = 10,你必须找到你了你RAW_CONTACT_ID是什么了。 祝好运!



Answer 2:

简单的解决办法是,查询ContactContract.Data为_id和MIME类型。

ContentResolver resolver = context.getContentResolver();  
cursor = resolver.query(
            ContactsContract.Data.CONTENT_URI,
            null, null, null,
            ContactsContract.Contacts.DISPLAY_NAME);

//Now read data from cursor like 

while (cursor.moveToNext()) {
      long _id = cursor.getLong(cursor.getColumnIndex(ContactsContract.Data._ID));
      String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
      String mimeType = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.MIMETYPE));

      Log.d("Data", _id+ " "+ displayName + " " + mimeType );

}

输出会像下面

12561艾伦vnd.android.cursor.item / vnd.googleplus.profile.comm

12562艾伦vnd.android.cursor.item / vnd.googleplus.profile.comm

12564艾伦vnd.android.cursor.item / vnd.googleplus.profile

现在保存在数据库或其他地方只有那些_ids其MIME类型是vnd.android.cursor.item / vnd.googleplus.profile.comm

然后你发起的视频群聊呼叫/消息,像这样的接触

Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);

// the _ids you save goes here at the end of /data/12562     
     intent.setDataAndType(Uri.parse("content://com.android.contacts/data/_id"),
                    "vnd.android.cursor.item/vnd.googleplus.profile.comm");
            intent.setPackage("com.google.android.talk");

startActivity(intent);

对于上面的代码工作,你必须要检查“保持接触最新的” Google+应用程序>设置>。



Answer 3:

小聚能处理一般的份额的意图。

下面是代码:

        Intent sendIntent = new Intent(Intent.ACTION_SEND);
        sendIntent.setType("text/plain");
        sendIntent.putExtra(Intent.EXTRA_TEXT, "text to be shared");

        activity.startActivity(sendIntent);


Answer 4:

尝试以这种方式

下面的方法使用共享文本群聊

/**
 * Initiate the actions encoded in the specified URI.
 */
public void initiateHangOutUri(Context myContext, String textToShare) {

  // Make sure Android client is installed.
  if (!isHangOutClientInstalled(myContext)) {
    goToMarket(myContext);
    return;
  }

  Intent sendIntent = new Intent();
  sendIntent.setAction(Intent.ACTION_SEND);
  sendIntent.putExtra(Intent.EXTRA_TEXT, textToShare);
  sendIntent.setType("text/plain");
  sendIntent.setPackage("com.google.android.talk");
  context.startActivity(sendIntent);

  return;
}

下面的方法来检查此设备上安装的视频群聊

/**
 * Determine whether the HangOut for Android client is installed on this device.
 **/
public boolean isHangOutClientInstalled(Context myContext) {
  final PackageManager packageManager = context.getPackageManager();
    Intent intent = packageManager.getLaunchIntentForPackage("com.google.android.talk");
    if (intent == null) {
        return false;
    }
    List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}

下面的方法使用goto Play商店中如果没有安装的视频群聊

public void goToMarket(Context myContext) {
  Uri marketUri = Uri.parse("market://details?id=com.skype.raider");
  Intent myIntent = new Intent(Intent.ACTION_VIEW, marketUri);
  myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  myContext.startActivity(myIntent);

  return;
}


Answer 5:

嘿,我想你试试这个。

Intent sky = new Intent("android.intent.action.VIEW", Uri.parse("https://talkgadget.google.com/hangouts/extras/talk.google.com/myhangout"));
startActivity(sky);

你只需要给视频群聊的网址,但很抱歉,Google暂停了名为hangots,所以这个网址每一次变化。



文章来源: Start Google Hangout from Intent in New Hangouts Android app