在新版环聊Android应用中从意向开始Google环聊

以前有关于从Android上的意图开始Google环聊的讨论:在Android中启动Google环聊

如何以Android的意图在Android中发起Google环聊?

结论是这是不可能的。 这是一个要求的改进: https : //code.google.com/p/google-plus-platform/issues/detail?id = 385

但是,昨天Google发布了一个新的环聊应用程序,一个新的意图。 现在可以通过意向开始环聊了吗?

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

但是,我想传递要呼叫的人员的姓名或ID – 收件人姓名。 我无法弄清楚这一点。

新的基于浏览器的video群聊应用通过一个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. 

我假设并非所有这些参数都是启动环聊所必需的,但是我无法破译如何在意图中传递收件人名称。

有什么想法吗? 谢谢。

Solutions Collecting From Web of "在新版环聊Android应用中从意向开始Google环聊"

所以我不知道这是否有助于其他人,因为我主要是想使用tasker发射一个意图。 如果你进入Google+>设置>联系人,你可以select“保持联系人最新”,它会添加一些新的行动,当你点击一个用户在Android中出现的卡。 然后你可以使用Intent Intercept来读取通过的值。 这是我得到的:

 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) 

我能够使用前三个值来正确打开与该联系人的对话。 显然,您的数据字段中的数字将根据联系人而变化。 你可以使用Intent拦截技巧,或者如果你有root用户,你可以使用类似SQLite Debugger的东西来破解联系人数据库中的数据表,并findMIMETYPE_ID = 16和DATA4 = 10的行。找出你的RAW_CONTACT_ID。 祝你好运!

简单的解决scheme是,为_id和MIMEtypes查询ContactContract.Data。

 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 Allen vnd.android.cursor.item / vnd.googleplus.profile.comm

12562 Allen vnd.android.cursor.item / vnd.googleplus.profile.comm

12564 Allen vnd.android.cursor.item / vnd.googleplus.profile

现在保存在数据库或其他地方,只保存MIMEtypes为vnd.android.cursor.item / vnd.googleplus.profile.comm的_Ids

然后你就可以用这种方式发起video聊天/留言

 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+应用>设置>通讯录中选中“保持联系更新”。

环聊可以处理通用的共享意图。

这里是代码:

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

嘿我想你试试这个。

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

你只需要给出环聊的url,但不幸的是,谷歌暂停了命名的hangots,所以这个url每次都会改变。

试试这种方式

以下方法使用共享文本到video群聊

 /** * 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; } 

下面的方法用来检查安装在这个设备上的HangOut

 /** * 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; } 

如果HangOut没有安装,下面方法使用goto playstore

 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; }