tra-loi-cau-hoi-phat-trien-web.com

Chia sẻ URL lên Facebook, Twitter và email trong Android?

Có điều gì tương tự với gotharekit.com cho Android không? Nó cho phép chia sẻ URL lên các trang mạng xã hội. Có bất cứ điều gì tương tự như thế này hay tôi cần mã riêng cho facebook, Twitter và email?

28
sunil

Tôi không biết đó có phải ý bạn không nhưng bạn có thể sử dụng menu chia sẻ tích hợp Android ...

Bạn có thể chia sẻ URL tới Facebook, Twitter, Gmail và hơn thế nữa (miễn là các ứng dụng được cài đặt trên thiết bị của bạn) bằng Ý định:

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_SUBJECT, "Sharing URL");
i.putExtra(Intent.EXTRA_TEXT, "http://www.url.com");
startActivity(Intent.createChooser(i, "Share URL"));

Ví dụ: nếu ứng dụng bạn muốn chia sẻ không được cài đặt trên thiết bị của người dùng - facebook, thì bạn sẽ phải sử dụng SDK Facebook.

Nếu bạn muốn Activity của mình xử lý dữ liệu văn bản được chia sẻ từ các ứng dụng khác, bạn có thể thêm dữ liệu này vào AndroidManifest.xml:

<activity Android:name=".ShareLink">
    <intent-filter>
        <action Android:name="Android.intent.action.SEND" />
        <category Android:name="Android.intent.category.DEFAULT" />
        <data Android:mimeType="text/plain" />
    </intent-filter>
</activity>

Hi vọng điêu nay co ich!

67
Lior Iluz

Bạn cũng có thể sử dụng lớp ShareCompat từ thư viện hỗ trợ.

ShareCompat.IntentBuilder.from(activity)
    .setType("text/plain")
    .setChooserTitle("Share URL")
    .setText("http://www.url.com")
    .startChooser();

https://developer.Android.com/reference/Android/support/v4/app/ShareCompat.html

15
lukjar

Đối với facebook, bạn có thể sử dụng `

https://m.facebook.com/sharer.php?u=website_url&t=titleOfThePost

url trang web có thể là bất cứ điều gì tham khảo bất kỳ tài nguyên nào, ví dụ nếu bạn muốn lấy một hình ảnh từ internet và chia sẻ nó trên tường của bạn.

hy vọng điều này sẽ giúp

4
Muhannad A.Alhariri

Bạn có thể thử điều này ...

private void shareTextUrl() {
        Intent share = new Intent(Android.content.Intent.ACTION_SEND);
        share.setType("text/plain");
        share.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

        share.putExtra(Intent.EXTRA_SUBJECT, "Title Of The Post");
        share.putExtra(Intent.EXTRA_TEXT, "<source url>");

        startActivity(Intent.createChooser(share, "Share text to..."));
    }
2
Kshitij Jhangra

Đây là triển khai của tôi, bạn có thể thêm nhiều ứng dụng hơn nếu bạn muốn bằng cách thêm tên gói. Mã này cũng sắp xếp các ứng dụng theo tên của họ.

    List<Intent> targetShareIntents = new ArrayList<Intent>();
    Intent shareIntent = new Intent();
    shareIntent.setAction(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    PackageManager pm = getActivity().getPackageManager();
    List<ResolveInfo> resInfos = pm.queryIntentActivities(shareIntent, 0);
    if (!resInfos.isEmpty()) {
        System.out.println("Have package");
        for (ResolveInfo resInfo : resInfos) {
            String packageName = resInfo.activityInfo.packageName;
            Log.i("Package Name", packageName);

            if (packageName.contains("com.Twitter.Android") || packageName.contains("com.facebook.katana")
                    || packageName.contains("com.whatsapp") || packageName.contains("com.google.Android.apps.plus")
                    || packageName.contains("com.google.Android.talk") || packageName.contains("com.slack")
                    || packageName.contains("com.google.Android.gm") || packageName.contains("com.facebook.orca")
                    || packageName.contains("com.yahoo.mobile") || packageName.contains("com.skype.raider")
                    || packageName.contains("com.Android.mms")|| packageName.contains("com.linkedin.Android")
                    || packageName.contains("com.google.Android.apps.messaging")) {
                Intent intent = new Intent();

                intent.setComponent(new ComponentName(packageName, resInfo.activityInfo.name));
                intent.putExtra("AppName", resInfo.loadLabel(pm).toString());
                intent.setAction(Intent.ACTION_SEND);
                intent.setType("text/plain");
                intent.putExtra(Intent.EXTRA_TEXT, "https://website.com/");
                intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_text));
                intent.setPackage(packageName);
                targetShareIntents.add(intent);
            }
        }
        if (!targetShareIntents.isEmpty()) {
            Collections.sort(targetShareIntents, new Comparator<Intent>() {
                @Override
                public int compare(Intent o1, Intent o2) {
                    return o1.getStringExtra("AppName").compareTo(o2.getStringExtra("AppName"));
                }
            });
            Intent chooserIntent = Intent.createChooser(targetShareIntents.remove(0), "Select app to share");
            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetShareIntents.toArray(new Parcelable[]{}));
            startActivity(chooserIntent);
        } else {
            Toast.makeText(getActivity(), "No app to share.", Toast.LENGTH_LONG).show();
        }
    }
0
Oguz Ozcan