2013-05-16 25 views
21

Có các cuộc thảo luận trước đây về bắt đầu Hangout Google từ một ý định trên Android: start google hangouts in androidKhởi động Google Hangout từ Ý định trong ứng dụng Hangouts mới Android

How can I start a Google Hangout in Android with an Intent?

Kết luận được rằng điều này là không thể. Đây là một yêu cầu nâng cao tại đây: https://code.google.com/p/google-plus-platform/issues/detail?id=385

Tuy nhiên, hôm qua Google đã phát hành một ứng dụng Hangouts mới, với một bộ ý định mới. Bắt đầu hangout qua mục đích bây giờ có thể không?

Tôi đã thành công một phần với action=android.intent.action.VIEW, data=content://plus.google.com/hangouts.

Tuy nhiên, tôi muốn chuyển tên hoặc ID của người tôi muốn gọi - tên người nhận. Tôi không thể hiểu được điều này.

Trình duyệt mới dựa trên ứng dụng Hangout bắt đầu hangout với một cái gì đó URL như sau:

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. 

tôi cho rằng không phải tất cả các thông số cần thiết để bắt đầu một hangout, nhưng tôi không thể giải mã làm thế nào để vượt qua tên người nhận trong mục đích.

Mọi suy nghĩ? Cảm ơn bạn.

Trả lời

0

hey, tôi nghĩ bạn thử điều này.

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

Bạn chỉ cần cung cấp url của hangout, nhưng tiếc là Google đã treo các hang được đặt tên, vì vậy url này mỗi lần thay đổi.

+2

Thật không may, điều này không thực hiện được những gì tôi muốn. Tôi biết cách khởi chạy ứng dụng nhưng tôi cần có khả năng tự động được gọi là người nhận. Nói cách khác, tôi cần có khả năng chuyển người nhận thông qua mục đích. – user2388372

+0

Ngoài ra, để làm rõ, tôi đang nói về ứng dụng Hangouts hoàn toàn mới vừa được phát hành hôm qua, ngày 15/5/13. Điều này có những ý định khác nhau từ các mục đích hangout cũ trên Google+ mà chắc chắn không cho phép chuyển người nhận đến mục đích. – user2388372

+0

bạn đã tìm ra cách để thực hiện việc này chưa? – AndroidDev93

5

Vì vậy, tôi không biết liệu điều này có giúp ích cho ai khác không vì tôi chủ yếu tìm cách kích hoạt ý định bằng cách sử dụng tác vụ. Nếu bạn truy cập Google+> Cài đặt> Danh bạ, bạn có thể chọn "Giữ liên hệ cập nhật" và nó sẽ thêm một số hành động mới vào thẻ xuất hiện khi bạn nhấp vào người dùng trong Android. Sau đó, bạn có thể sử dụng Intent Intercept để đọc các giá trị sắp tới. Dưới đây là những gì tôi nhận được:

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) 

Tôi đã có thể sử dụng ba giá trị hàng đầu để mở đúng cuộc hội thoại với liên hệ đó. Rõ ràng là số trong trường dữ liệu của bạn sẽ thay đổi tùy thuộc vào số liên lạc. Bạn có thể sử dụng thủ thuật với Intent Intercept, hoặc nếu bạn có root, bạn có thể sử dụng một cái gì đó như SQLite Debugger để mở bảng dữ liệu trong cơ sở dữ liệu danh bạ và tìm các hàng có MIMETYPE_ID = 16 và DATA4 = 10. Bạn sẽ phải tìm hiểu xem RAW_CONTACT_ID của bạn cũng thế nào. Chúc may mắn!

+0

Bạn có thể giải thích cách nhận số giá trị "Dữ liệu" bằng truy vấn không? –

1

Hangout có thể xử lý mục đích chia sẻ chung.

Đây là mã:

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

     activity.startActivity(sendIntent); 
+0

Đây chính xác là cách Android hoạt động, Mục đích cho phép người dùng chọn ứng dụng nào sẽ mở. –

1

thử theo cách này

Dưới đây sử dụng phương pháp để chia sẻ nội dung để hangout

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

Dưới phương pháp sử dụng để kiểm tra Hangout được cài đặt trên thiết bị này

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

Dưới đây là phương pháp sử dụng cửa hàng playstore nếu HangOut không được cài đặt

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

Giải pháp đơn giản là, Query ContactContract.Data cho loại _id và 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); 

} 

Kết quả sẽ như thế nào sau

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

Bây giờ lưu trong DB hoặc ở một nơi khác chỉ những _Ids mà MIME type là vnd.a ndroid.cursor.item/vnd.googleplus.profile.comm

Và sau đó bạn bắt đầu hangout cuộc gọi/tin nhắn với những địa chỉ liên lạc như cách này

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

Đối với các mã trên để làm việc bạn phải có để kiểm tra " Giữ liên lạc cập nhật "trong Ứng dụng Google+> Cài đặt> Danh bạ.

Các vấn đề liên quan