2011-10-06 23 views
6

Tôi đang triển khai các chức năng chia sẻ trên ứng dụng Android của mình. Tôi đã tích hợp một trình chọn ý định để chia sẻ một tin nhắn kiểu văn bản. Bây giờ, tôi muốn tạo hai phím tắt: một để truy cập vào trang đăng bài Facebook của người dùng, một trang khác để truy cập vào trang bài đăng trên twitter của anh ấy. (như chooser làm)Phím tắt cho các ứng dụng Facebook và Twitter đăng các trang

Tôi tìm thấy chủ đề hữu ích này: launch facebook app from other app và cố gắng tìm đúng từ (fb: // word) bằng cách sử dụng lệnh shell ADB nhưng tôi không thể tìm ra ("publish", " xuất bản "," bài đăng "," chia sẻ "," chia sẻ "không hoạt động).

Sau đó, tôi đã cố gắng nắm bắt ý định đã tạo (thông qua Nhật ký) trên trình chọn ý định khi tôi nhấp vào Facebook hoặc Twitter. Tôi tìm thấy:

"khởi điểm: Ý định {hành động = android.intent.action.SEND typ = text/plain FLG = 0x3000000 CMP = com.twitter.android/.PostActivity (có tính năng bổ sung)} từ 17.575 pid" cho Facebook và

"Bắt đầu: Ý định {act = android.intent.action.SEND typ = text/plain flg = 0x3000000 cmp = com.facebook.katana/.ShareLinkActivity (có phần bổ sung)} từ pid 17575" cho Twitter.

Tôi tạo ra những ý đồ với các mã sau (vào các nút onClick() phương pháp):

Intent fbIntent = new Intent(Intent.ACTION_SEND); 
fbIntent.setType("text/plain"); 
fbIntent.setFlags(0x3000000); 
fbIntent.setComponent(new ComponentName("com.facebook.katana", ".ShareLinkActivity")); 
fbIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_text)); 
startActivity(fbIntent); 

Tôi cũng đã cố gắng theo cách này:

Intent twitterIntent = new Intent(Intent.ACTION_VIEW); 
twitterIntent.setAction("android.intent.action.SEND"); 
twitterIntent.setFlags(0x3000000);     
twitterIntent.setType("text/plain");  
twitterIntent.setComponent(new ComponentName("com.twitter.android", ".PostActivity")); 
twitterIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_text)); 
startActivity(twitterIntent); 

Nhưng ngay cả khi các bản ghi tìm kiếm các không có gì xảy ra cả.

Bất kỳ ý tưởng nào?

+0

whats "0x3000000 "? – NitZRobotKoder

Trả lời

9

Tôi nghĩ bạn nên sử dụng setClassName thay vì setComponent.

intent.setClassName("com.facebook.katana", "com.facebook.katana.ShareLinkActivity"); 

intent.setClassName("com.twitter.android", "com.twitter.android.composer.ComposerActivity"); 

Note: phiên bản gần đây Twitter đang sử dụng 'com.twitter.android.composer.ComposerActivity' (thay vì 'com.twitter.android.PostActivity')

+0

Tôi biết rằng có một cách dễ dàng để làm điều đó! Cảm ơn bạn rất nhiều @ Jompis, bài viết của bạn đã cứu tôi !! – Noneu

+0

TUYỆT VỜI, nó hoạt động !!! – NullPointerException

+1

Có ai biết tên lớp để chỉ mở ứng dụng twitter không? intent.setClassName ("com.twitter.android", "com.twitter.android"); Rõ ràng điều này không hoạt động. – SoH

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