2012-11-22 43 views
5

Tôi sử dụng mục đích và hành động. GỬI để chia sẻ tin nhắn tùy chỉnh của tôi trên các mạng xã hội như WhatsApp, twitter, Facebook và GMail. Mọi thứ đều ổn trên Gmail và các ứng dụng khác ngoại trừ Facebook! Làm thế nào tôi có thể tùy chỉnh mã của tôi để chia sẻ điều gì đó trên Facebook? Tôi chia sẻ trên Facebook bằng cách sử dụng Facebook SDK mà không có vấn đề gì, nhưng tôi muốn làm điều đó bằng một ý định.Chia sẻ nội dung trên FaceBook Android

đây là những gì tôi sử dụng:

Intent sendIntent = new Intent(); 
sendIntent.setAction(Intent.ACTION_SEND); 
sendIntent.putExtra(Intent.EXTRA_TEXT, knowTitle+"Read the full article via MomsApp by EnfaMama A+ at http://meadjohnsonasia.com.my/mobileapp"); 

sendIntent.putExtra(Intent.EXTRA_SUBJECT, "I just read "+knowTitle); 
sendIntent.setType("*/*"); 
startActivity(Intent.createChooser(sendIntent, "Share Your Favorite Article")); 

Trả lời

5

Điều tôi đã làm thực sự là đánh chặn mục tiêu được chọn của người sắp xếp thứ tự, bạn có thể làm điều đó bằng cách sử dụng trình hỗ trợ hành động của bạn. Giả sử bạn đã tạo một mục với một onclick bắt đầu ý định. Để thực hiện điều đó, bạn có thể khởi tạo trình điều khiển hành động để thực hiện việc này. Actionprovider này có thể có setOnShareTargetSelectedListener để chặn bất kỳ ý định nào mà bạn muốn xử lý khác nhau (hoặc không phải là tất cả ^^). Xem mã bên dưới để biết cách định cấu hình trình tạo hành động của bạn.

actionProvider.setShareIntent(createShareIntent()); 
    actionProvider.setOnShareTargetSelectedListener(new OnShareTargetSelectedListener(){ 

     @Override 
     public boolean onShareTargetSelected(ShareActionProvider source, 
       Intent intent) { 
      if ("com.facebook.katana".equals(intent.getComponent().getPackageName()) && mfacebooksharer != null) { 
       mfacebooksharer.shareStatus(subject, text); 
        return true; 
       } 
       return false; 
     } 

    }); 

Bất cứ khi nào facebook được chọn, tôi sử dụng mfacebooksharer để xử lý ý định và làm theo API facebook. ofcourse, actionrpovider cần phải có một ý định. (Cũng giống như bạn muốn làm việc với một ý định). Tôi sử dụng phương pháp dưới đây để tạo ra ý định.

private Intent createShareIntent() { 
     intentsetter.setIntentleave(true); 
     Intent shareIntent = new Intent(Intent.ACTION_SEND); 
     shareIntent.setType("text/plain"); 
     shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); 
     shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, text);   
     return shareIntent; 
    } 
+0

Tính năng này chỉ hoạt động trong Android 4.0 – Giorgi

1

Sử dụng Ý định trong Android, bạn có thể chia sẻ chỉ một liên kết mà không cần văn bản:

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_TEXT, "http://www.google.ca"); 
startActivity(Intent.createChooser(intent, "Share with")); 

Nó sẽ làm việc. Nếu bạn muốn chia sẻ văn bản và liên kết, bạn phải sử dụng SDK Facebook cho Android: https://github.com/facebook/facebook-android-sdk

4

Theo Chính sách nền tảng của Facebook, bạn không thể điền sẵn hộp thoại chia sẻ bằng cách sử dụng Intent.EXTRA_TEXT. Nó thường được cho là một lỗi, nhưng theo một báo cáo lỗi nộp here và cũng có thể, here, Facebook rõ ràng đề cập rằng đây không phải là trường hợp (nó không phải là một lỗi).

Bạn có thể đọc thêm về Platform Policies đặc biệt của họ, nền tảng chính sách IV.2

Trích từ Platform Policy IV.2:

Bạn phải không trước khi điền vào bất kỳ trường nào được liên kết với các sản phẩm sau , trừ khi người dùng đã tạo nội dung theo cách thủ công trước đó trong luồng công việc: Câu chuyện luồng (tham số user_message cho Facebook.streamPublish và FB.Connect.st reamPublish và thông báo tham số cho stream.publish), Ảnh (chú thích), Video (mô tả), Ghi chú (tiêu đề và nội dung), Liên kết (nhận xét) và Jabber/XMPP.

Các trường này được thiết kế để người dùng thể hiện bản thân. Điền sẵn các trường này sẽ làm xói mòn tính xác thực của giọng nói của người dùng.

Cách duy nhất bạn có thể chia sẻ những câu chuyện từ App của bạn là bằng cách tích hợp Facebook SDK, mà theo bài viết của bạn, bạn đã có thể thành công. Đó là tùy chọn duy nhất có sẵn (không may).

+0

Ok nhưng tôi muốn người dùng trực tiếp chia sẻ facebook tùy chỉnh bằng facebook SDK, làm cách nào tôi có thể phát hiện người dùng đã nhấp vào facebook chứ không phải Gmail chẳng hạn !! sau đó nếu facebook của nó có thể dễ dàng làm những gì tôi muốn –

+0

@MahdiGiveie: Bạn muốn người dùng chọn ứng dụng của bạn từ danh sách các ứng dụng mà họ có thể chia sẻ? –

+0

không phải ứng dụng của tôi !! Tôi muốn người dùng khi nhấp chuột vào Facebook từ danh sách các ứng dụng người dùng có thể chia sẻ trực tiếp với việc chia sẻ Facebook tùy chỉnh của tôi! vấn đề của tôi là làm thế nào tôi có thể phát hiện người dùng đã nhấp vào facebook từ danh sách? –

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