2010-12-13 30 views
13

Tôi đang sử dụng một cái gì đó như thế này để chia sẻ một số văn bản bằng cách sử dụng các ứng dụng có sẵn trên điện thoại của người dùng.Trình chọn mục đích chia sẻ Android

public void share(String subject,String text) { 
    final Intent intent = new Intent(Intent.ACTION_SEND); 

    intent.setType("text/plain"); 
    intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
    intent.putExtra(Intent.EXTRA_TEXT, text); 

    startActivity(Intent.createChooser(intent, getString(R.string.share))); 
} 

Vấn đề chính của tôi là tôi muốn có một văn bản khác nếu người dùng chọn Twitter thay vì email chẳng hạn (phiên bản ngắn có URL ngắn VS toàn văn với hình ảnh đính kèm).

Làm cách nào để biết được ứng dụng nào người dùng đã quyết định sử dụng?

+0

gumbercules có một câu trả lời tuyệt vời ở đây: http://stackoverflow.com/questions/5734678/custom-filtering-of-intent-chooser-based-on-installed-android-package-name – hitch45

Trả lời

8

Sau khi bạn đưa văn bản ra khỏi hệ thống với createChooser ra khỏi bàn tay của bạn, không có cách nào để thay đổi văn bản sau đó.

+0

Vì vậy, Tôi phải xây dựng chooser của riêng mình? : -/Thiết kế Clumsy API phải không? Trong trường hợp đó, bất kỳ mã mẫu nào về cách tạo mục đích cụ thể cho Twitter hoặc Facebook chẳng hạn? –

+2

ứng dụng được đề cập sẽ phải xuất bản api công khai của riêng mình để gửi tweet, cập nhật trạng thái, v.v. Twitdroid là ứng dụng duy nhất tôi biết điều đó đã làm như vậy và không có người nào khác tuân theo quy ước của nó. Cá nhân tôi không quan tâm đến thiết kế này, tôi nghĩ rằng sự tiện lợi có giá trị thương mại-off. – schwiz

+0

Nó thực sự là thuận tiện, tuy nhiên nó là khá khó khăn để thích ứng với những hạn chế về chiều dài tin nhắn ví dụ. Tôi có thể chỉ cần thêm một hộp thoại yêu cầu người dùng nếu anh ấy muốn chia sẻ nội dung đó dưới dạng văn bản ngắn hoặc dài. Không tối ưu như xa như số lượng nhấp chuột để đạt được những gì bạn cần nhưng cách duy nhất tôi có thể nghĩ đến cho đến nay. Cảm ơn các đầu vào. –

1
Intent intent = new Intent(Intent.ACTION_SEND); 

intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
intent.putExtra(Intent.EXTRA_TEXT, textWhichYouWantToShare); 

startActivity(Intent.createChooser(intent, getString(R.string.share))); 
Các vấn đề liên quan