Запустите Google Hangouts от Intent в приложении New Hangouts для Android.

Предыдущие обсуждения здесь касаются запуска Google Hangouts с намерением Android: начать google-тусовки в Android

Как начать Google Hangouts в Android с намерением?

Вывод состоял в том, что это было невозможно. Это запрошенное улучшение здесь: https://code.google.com/p/google-plus-platform/issues/detail?id=385

Однако вчера Google выпустил новое приложение Hangouts с новым набором намерений. Возможно ли начать видеовстречу через намерение?

Я был частично успешным с action=android.intent.action.VIEW , data=content://plus.google.com/hangouts .

Однако я хочу передать имя или идентификатор человека, которого я хочу назвать, – имя получателя. Я не могу понять это.

Новое приложение для подключения к браузеру запускает видеовстречу с 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 "Запустите Google Hangouts от Intent в приложении New Hangouts для Android."

Поэтому я не знаю, помогло ли это кому-либо другому, потому что я в основном старался сбить цель с помощью tasker. Если вы заходите в Google+> Настройки> Контакты, вы можете проверить «Держать контакты в актуальном состоянии», и он добавит некоторые новые действия на карточку, которая появляется, когда вы нажимаете на пользователя в 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 Intercept, или если у вас есть root, вы можете использовать что-то вроде SQLite Debugger, чтобы взломать таблицу данных в базе данных контактов и найти строки, где MIMETYPE_ID = 16 и DATA4 = 10. У вас будет Чтобы узнать, что ваш RAW_CONTACT_ID тоже. Удачи!

Простое решение: Query 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 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

Теперь сохраните в БД или где-то еще только те _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+»> «Настройки»> «Контакты».

Hangout может обрабатывать общие намерения.

Вот код:

  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-адрес видеовстречи, но, к сожалению, Google приостановил названные ансамбли, поэтому этот URL-адрес меняется каждый раз.

Попробуйте таким образом

Ниже метода используется для совместного использования текста в видеовстрече

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

Ниже метода используйте goto playstore, если HangOut не установлен

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