2010-08-28 72 views
6

Tôi đang cố gắng mở một email riêng lẻ theo chương trình trong ứng dụng Gmail trên Android.Cách mở một tin nhắn/cuộc hội thoại cụ thể trong ứng dụng Gmail

Tôi biết điều này có thể được thực hiện vì thông báo tích hợp gửi cho bạn tin nhắn khi bạn nhấp vào chúng và có ứng dụng trên thị trường có tên là Gmail Notifier.

Những gì tôi đã cố gắng cho đến nay:

-gửi một ý định ACTION_VIEW với thông điệp URI như dữ liệu (thất bại - không thể giải quyết URI)

-gửi một ý định mở HtmlConversationActivity trong gói Gmail (không thành công - "yêu cầu quyền: null")

Bạn có thể thêm cờ hoặc danh mục vào mục đích không? Nếu có, cái nào?

Tôi biết rằng ứng dụng Gmail không được ghi chép đầy đủ, nhưng điều đó khiến tôi phát điên rằng chắc chắn có cách để làm điều đó và tôi không thể hình dung ra được!

P.S .: Đây là lần đầu tiên tôi đăng trên stackoverflow, vì vậy tôi xin lỗi trước nếu tôi đã bỏ qua bất kỳ quy ước nào.

Trả lời

8

Nó có thể là có thể, nhưng google đã đảm bảo rằng nó sẽ là không thể. Tôi đã dành một vài giờ cố gắng để làm cho nó hoạt động:

  1. Đã kéo Gmail.apk khỏi điện thoại gốc của tôi.
  2. Decompiled nó bằng cách sử dụng apktools.
  3. Went qua manifest.xml

2 hoạt động dường như có ích cho nó:

hoạt động android: theme = "@ android: phong cách/Theme.Light.NoTitleBar" android: nhãn = "@ string/activity_conversation" android: name = "HtmlConversationActivity" android: configChanges = "keyboardHidden | hướng"

hoạt động android: label = "@ string/activity_search" android: name = "SearchActivity"

Cả hai đều không có bộ lọc ý định nên bạn không thể gọi cho họ. Nếu bạn cố gắng bạn sẽ nhận được

Permission từ chối: bắt đầu từ Ý định {hành động = android.intent.action.VIEW FLG = 0x10000000 CMP = com.google.android.gm/.HtmlConversationActivity} từ {ProcessRecord 40b7d248 26.043: xôn xao.gmailresearch/10154} (pid = 26043, uid = 10154) yêu cầu null

Có thể sử dụng com.google.android.gm.ConversationListActivity. Nhưng mã phải được obfuscated và tôi không bận tâm để lấy mã nguồn của Gmail.apk để xác minh mà cờ họ sử dụng ...

EDIT: Vâng OK tôi đã bận tâm để kiểm tra xem nó, và đáng ngạc nhiên đủ Google không làm xáo trộn ứng dụng Gmail của họ :) Vì vậy, tôi đã có thể lấy mã nguồn của APK. Đã đào một số và đây là những gì tôi tìm thấy ...

Hoạt động liên quan là ConverstaionListActivity.

Trong manifest.xml nó có bộ lọc mục đích này:

action android: name = "android.intent.action.SEARCH" />

Như tôi kiểm tra mã cho hoạt động tôi phát hiện ra rằng có 3 chuỗi được mong đợi để nhận được thêm:

public static final String EXTRA_LABEL = "label"; 
public static final String EXTRA_SEARCH = "search"; 
public static final String EXTRA_TITLE = "title"; 

Dù sao thì cũng được. dòng nút, bạn không thể mở một cuộc trò chuyện cụ thể. nhưng bạn có thể chuyển truy vấn tìm kiếm sẽ chỉ hiển thị cuộc hội thoại cụ thể của bạn từ tất cả thư mà người dùng có.

Intent mailClient = new Intent(Intent.ACTION_SEARCH); mailClient.setClassName("com.google.android.gm", "com.google.android.gm.ConversationListActivity"); mailClient.putExtra("query", "15 Apps for Programming");
startActivity(mailClient);

+2

điều này dường như không hoạt động nữa. Tôi chỉ cố gắng. Có ai đã có bất kỳ thành công với điều này? – Enigma

+0

Vâng Điều này không hoạt động nữa ... –

1

Tôi đang cố gắng mở một email riêng lẻ theo chương trình trong ứng dụng Gmail trên Android.

Không có tài liệu và được hỗ trợ Intents để làm việc với ứng dụng Gmail. Các nhà phát triển không được tích hợp chặt chẽ với ứng dụng này - nếu Google muốn tích hợp như vậy, họ sẽ tài liệu và hỗ trợ tích hợp như vậy, như họ đã làm với các liên hệ.

+3

tôi biết bạn muốn nói rằng, nhưng nếu tôi muốn có một công ty cho tôi biết những gì tôi được phép làm, tôi muốn làm cho các ứng dụng dành cho iPhone! Điểm của tôi là nó có thể được thực hiện và nó sẽ là tuyệt vời để biết làm thế nào. Tôi sẵn sàng chấp nhận rủi ro rằng một ngày ứng dụng của tôi sẽ ngừng hoạt động và thu nhập của tôi từ ứng dụng cụ thể đó sẽ giảm xuống còn 0 (tôi đang bán nhiều ứng dụng). – katzoft

+0

hey @CommonsWare, tôi biết đây là chủ đề rất cũ, Nhưng có anyway để mở ý định của tin nhắn cụ thể bây giờ-một-ngày. –

+0

@NiteshSingh: Vì tôi không biết ứng dụng của bạn sẽ có số nhận dạng cho một email cụ thể như thế nào, tôi không thể trả lời. – CommonsWare

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