অ্যান্ড্রয়েড এবং ফেসবুক শেয়ারের অভিপ্রায়


85

আমি একটি অ্যান্ড্রয়েড অ্যাপ বিকাশ করছি এবং আপনি কীভাবে অ্যাপের ব্যবহারকারীর স্ট্যাটাসটি অ্যাপের মধ্যে অ্যান্ড্রয়েডের শেয়ারের উদ্দেশ্যগুলি ব্যবহার করে আপডেট করতে পারবেন তা জানতে আগ্রহী।

ফেসবুকের এসডিকে দিয়ে দেখে মনে হচ্ছে এটি করা যথেষ্ট সহজ, তবে আমি ব্যবহারকারীকে নিয়মিত শেয়ার ইন্টেন্ট পপ আপ উইন্ডোর মাধ্যমে এটি করার অনুমতি দিতে আগ্রহী? এখানে দেখা:

পপ আপ

আমি সাধারণ শেয়ার ইন্টেন্ট কোড চেষ্টা করেছি, তবে এটি আর ফেসবুকের জন্য কাজ করে না বলে মনে হয়।

public void invokeShare(Activity activity, String quote, String credit) {
    Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, activity.getString(R.string.share_subject));
    shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Example text");    

    activity.startActivity(Intent.createChooser(shareIntent, activity.getString(R.string.share_title)));
}

আপডেট: আরও খননকাজ করার পরে, দেখে মনে হচ্ছে এটি ফেসবুকের অ্যাপ্লিকেশন সহ একটি বাগ যা এখনও সমাধান করা যায়নি! ( ফেসবুক বাগ ) মনে হচ্ছে ঠিক সময়ের জন্য মনে হচ্ছে আমি কেবল নেতিবাচক "সহভাগীকরণ কাজ করে না !!!" সহ্য করতে চলেছি পর্যালোচনা। চিয়ার্স ফেসবুক: * (


প্রায় এক বছর ধরে ভেঙে এখন একাধিক সংশোধনী নিয়ে আমি বুঝতে পারছি না কেন তারা এটিকে ঠিক করবে না !!
নাথান শোয়ারম্যান

4
এখনও ভাঙা। আমি ভাবতে শুরু করছি তারা আপনাকে তাদের বোকা ফেসবুক এসডিকে ব্যবহার করার উদ্দেশ্যে তারা এটিকে ঠিক করে না।
চাচা ইস্তান

4
ওহ, দেখা যাচ্ছে যে ফেসবুক এখন আনুষ্ঠানিকভাবে প্রতিক্রিয়া জানিয়েছে যে তারা আচরণটি ভাঙ্গা বিবেচনা করে না এবং এটি পরিবর্তন করবে না: ডেভেলপার্স.ফেসবুক.
স্কট ডব্লু

4
কমপক্ষে কোন সমাধান বা workaround না? খালি মেসেজ নিয়েই বাঁচতে হবে? : /
আইএক্সএক্স

4
দুর্ভাগ্যক্রমে একমাত্র ফিক্স বা কর্মপরিকল্পনা হ'ল তাদের এসডিকে আপনার অ্যাপ্লিকেশনটিতে সংহত করা।
জোসেফ উডওয়ার্ড

উত্তর:


97

ফেসবুক অ্যাপ্লিকেশনটি ক্ষেত্র EXTRA_SUBJECTবা EXTRA_TEXTক্ষেত্রগুলি হ্যান্ডেল করে না ।

এখানে বাগ লিঙ্কটি রয়েছে: https://developers.facebook.com/bugs/332619626816423

ধন্যবাদ @ বিলিএনমেটস:

জিনিস আপনি একটি URL করা হয়, EXTRA_TEXTক্ষেত্র, এটা করে হবে। এগুলি এর মতো যা তারা ইচ্ছাকৃতভাবে কোনও পাঠ্য বের করে দিচ্ছে।


30
জিনিসটি হল, আপনি যদি EXTRA_TEXT ক্ষেত্রে কোনও ইউআরএল রাখেন, এটি কার্যকর হয় । এটি তাদের উদ্দেশ্যমূলকভাবে কোনও পাঠ্য কেটে ফেলার মতো।
এমএসপিড

4
এটি সত্যিই বোবা যে এটি এখনও আইওএস এ (লেখার সময়) কাজ করে তবে অ্যান্ড্রয়েডে কাজ করে না।
পিটার কে।

ফেসবুকে শেয়ারের উদ্দেশ্য সহ কেবল লিঙ্কগুলি ভাগ করা যায়।
মিশা আকোপভ

4
ব্যবহারকারীরা হাতে হাতে সামগ্রীটি টাইপ করতে হবে: "দয়া করে নোট করুন যে ব্যবহারকারীরা সম্পাদনা করতে পারে এমন প্রস্তাবিত সামগ্রীর সাথে বার্তা পরামিতিটি পূর্বে পূরণ করাও নীতি লঙ্ঘন" youtube.com/watch?v=tGz48L0m5nc
কাউরেটিনহো

4
@ পিটারক আপনি কি ফেসবুকে পাঠ্য পাঠানোর কোনও উপায় খুঁজে পেয়েছেন?
করণ খুরানা

115

স্পষ্টতই ফেসবুক আপনাকে আর ভাগ করে নেওয়ার স্ক্রিনটি কাস্টমাইজ করতে দেয় না, আপনি কেবল শেয়ারআরএফপি ইউআরএল খুলছেন বা অ্যানড্রয়েডের অভিপ্রায়টিকে আরও বিশেষায়িত উপায়ে ব্যবহার করছেন তা বিবেচনা করে না। উদাহরণস্বরূপ এই উত্তরগুলি দেখুন:

যাইহোক, প্লেইন ইন্টেন্ট ব্যবহার করে, আপনি এখনও একটি ইউআরএল ভাগ করতে পারেন , তবে এটির সাথে কোনও ডিফল্ট পাঠ্য নয় , যেমন বিলিএনমেট মন্তব্য করেছেন । (এছাড়াও, যদি আপনার ভাগ করার কোনও ইউআরএল না থাকে তবে খালি "রাইটিং পোস্ট" (অর্থাত্ স্ট্যাটাস আপডেট) ডায়ালগ দিয়ে ফেসবুক অ্যাপ্লিকেশন চালু করা সমান সহজ; নীচের কোডটি ব্যবহার করুন তবে ছেড়ে যান EXTRA_TEXT))

এখানে আমি খুঁজে পেয়েছি যে সেরা সমাধানটি কোনও ফেসবুক এসডিকে ব্যবহার করে নি

এই কোডটি ইনস্টল করা থাকলে সরাসরি অফিশিয়াল ফেসবুক অ্যাপ্লিকেশনটি খোলে এবং অন্যথায় ব্রাউজারে শেয়ারআরএফপি খোলার জন্য ফিরে আসে। (এই প্রশ্নের অন্যান্য সমাধানগুলির বেশিরভাগই একটি বিশাল "সম্পূর্ণ ক্রিয়াকলাপ ব্যবহার করে ..." ডায়ালগ নিয়ে আসে যা সর্বোত্তম নয়!)

String urlToShare = "/programming/7545254";
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
// intent.putExtra(Intent.EXTRA_SUBJECT, "Foo bar"); // NB: has no effect!
intent.putExtra(Intent.EXTRA_TEXT, urlToShare);

// See if official Facebook app is found
boolean facebookAppFound = false;
List<ResolveInfo> matches = getPackageManager().queryIntentActivities(intent, 0);
for (ResolveInfo info : matches) {
    if (info.activityInfo.packageName.toLowerCase().startsWith("com.facebook.katana")) {
        intent.setPackage(info.activityInfo.packageName);
        facebookAppFound = true;
        break;
    }
}

// As fallback, launch sharer.php in a browser
if (!facebookAppFound) {
    String sharerUrl = "https://www.facebook.com/sharer/sharer.php?u=" + urlToShare;
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse(sharerUrl));
}

startActivity(intent);

( com.facebook.katanaপ্যাকেজের নাম সম্পর্কিত, ম্যাথিউস জার্ডিমবির মন্তব্য দেখুন ))

ফলাফলটি আমার নেক্সাস on (অ্যান্ড্রয়েড 4..৪) এ ফেসবুক অ্যাপ্লিকেশন সহ ইনস্টল করার মত দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন


4
"com.facebook.katana" হ'ল ফেসবুক অ্যাপের প্যাকেজের নাম এবং "com.facebook.orca" এফবি মেসেঞ্জার অ্যাপের জন্য। আপনি যে সঠিক প্যাকগ্রেটি চান তা পরিবর্তন করতে পারেন। আপনি যদি একটি নির্দিষ্ট না করে থাকেন তবে প্রথম
পাওয়াটি

4
ভাল ধরা, ধন্যবাদ! আমি উত্তর আপডেট। দেখা যাচ্ছে ফেসবুক অন্যান্য অ্যাপ্লিকেশনও ( হোম এবং পৃষ্ঠাগুলি পরিচালক ) প্রকাশ করেছে যা com.facebookউপসর্গের সাথেও মেলে ।
জোনিক

হ্যালো ... যদি আমি পোস্ট এডিটেক্সট পূরণ করতে চাই তবে কীভাবে ফেসবুক দিয়ে কাজ করব।
দাস

ইউআরএল সহ পাঠ্য কিভাবে সেট করবেন?
আনন্দ সাবজানি

আপনি পারবেন না (যেমনটি একেবারে শুরুর দিকেই সাহসী হিসাবে উল্লেখ করা হয়েছে)। দয়া করে উত্তরটি পড়ুন।
জোনিক

16

স্বাভাবিক উপায়

আপনি যা চাইছেন তা তৈরি করার সাধারণ উপায়টি কেবল নিম্নলিখিতটি করা:

    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("text/plain");
    intent.putExtra(Intent.EXTRA_TEXT, "The status update text");
    startActivity(Intent.createChooser(intent, "Dialog title text"));

এটি আমার জন্য কোনও সমস্যা ছাড়াই কাজ করে।

বিকল্প উপায় (সম্ভবত)

এটি করার ক্ষেত্রে সম্ভাব্য সমস্যাটি হ'ল আপনি বার্তাটি ই-মেইল, এসএমএস ইত্যাদির মাধ্যমেও প্রেরণের অনুমতি দিচ্ছেন নীচের কোডটি এমন একটি যা আমি একটি অ্যাপ্লিকেশনটিতে ব্যবহার করছি যা ব্যবহারকারী আমাকে ই-মেইল প্রেরণ করতে পারবেন জিমেইল ব্যবহার করে। আমি অনুমান করছি আপনি এটি ফেসবুকের সাথে কাজ করার জন্য এটি পরিবর্তন করার চেষ্টা করতে পারেন।

আমি নিশ্চিত না যে এটি কোনও ত্রুটি বা ব্যতিক্রমগুলিতে কীভাবে প্রতিক্রিয়া জানায় (ফেসবুক ইনস্টল না করা হলে এটি ঘটবে বলে আমি ধারণা করছি), সুতরাং আপনাকে এটি কিছুটা পরীক্ষা করতে হতে পারে।

    try {
        Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
        String[] recipients = new String[]{"e-mail address"};
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients);
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "E-mail subject");
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "E-mail text");
        emailIntent.setType("plain/text"); // This is incorrect MIME, but Gmail is one of the only apps that responds to it - this might need to be replaced with text/plain for Facebook
        final PackageManager pm = getPackageManager();
        final List<ResolveInfo> matches = pm.queryIntentActivities(emailIntent, 0);
        ResolveInfo best = null;
        for (final ResolveInfo info : matches)
            if (info.activityInfo.packageName.endsWith(".gm") ||
                    info.activityInfo.name.toLowerCase().contains("gmail")) best = info;
                if (best != null)
                    emailIntent.setClassName(best.activityInfo.packageName, best.activityInfo.name);
                startActivity(emailIntent);
    } catch (Exception e) {
        Toast.makeText(this, "Application not found", Toast.LENGTH_SHORT).show();
    }

4
ধন্যবাদ তোমার উত্তরের জন্য. এটিই আমাকে বিভ্রান্ত করে, আপনার পোস্ট করা কোডের প্রথম স্নিপেট শেয়ার ইন্টেন্ট সহ প্রতিটি অ্যাপ্লিকেশনটিতে পোস্ট করার জন্য ভাল কাজ করে, তবে ফেসবুকের অভিপ্রায় ব্যবহারকারীকে একটি ফাঁকা "কিছু লিখুন" ফেসবুক পৃষ্ঠায় নিয়ে যায় যেন এটি প্রেরণ না করে ( বা সম্ভবত প্রাপ্তি করা হবে) EXTRA_TEXT ক্ষেত্রের মধ্যে পাঠ্য।
জোসেফ উডওয়ার্ড

হুম, এটি আমার ট্যাবলেটের প্রথমটির সাথে ঠিক কাজ করে। যেমন বলা হয়েছে, এটি EXTRA_SUBJECT ক্ষেত্র ছাড়াই চেষ্টা করুন। যে পার্থক্য করা হবে বলে মনে হচ্ছে।
মিশেল বাক

4
আসলে, আমি কেবল এটি যাচাই করেছি এবং হ্যাঁ - এটি ভেঙে গেছে। কাজের জন্য বাবহ্রিত.
মিশেল বাক

হ্যাঁ, আমার সম্পাদিত প্রথম পোস্টে উল্লিখিত হিসাবে এটি ফেসবুক অ্যাপ্লিকেশনটিতে একটি বাগ হিসাবে দেখা যাচ্ছে যা এপ্রিল ২০১১ (!) থেকে রয়েছে। যাই হোক না কেন, আমার প্রশ্নের জবাব দিতে সময় দেওয়ার জন্য আপনাকে ধন্যবাদ।
জোসেফ উডওয়ার্ড

4
@ টমসুয়েল ইয়েপ, ফেসবুকের একসাথে বিষ্ঠা হওয়া উচিত। এটি কোনও ইউআরএল সহ অন্তর্ভুক্ত থাকাকালীন কাজ করে। ডাউনভোটের জন্য ধন্যবাদ ;-)
মিশেল বাক

5

আমি জানতে পেরেছি আপনি কেবল পাঠ্য বা চিত্র উভয়ই ভাগ করতে পারেন , উভয়ই ব্যবহার করছেন না Intents। কোড শেয়ার কেবল নীচের চিত্র যদি বিদ্যমান, অথবা শুধুমাত্র পাঠ্য যদি ভাবমূর্তি প্রস্থানের না। আপনি যদি উভয়ই ভাগ করতে চান তবে আপনাকে এখান থেকে ফেসবুক এসডিকে ব্যবহার করতে হবে

আপনি যদি নীচের কোডের পরিবর্তে অন্য সমাধান ব্যবহার করেন তবে প্যাকেজের নাম com.facebook.lite নির্দিষ্ট করতে ভুলবেন না , যা ফেসবুক লাইটের প্যাকেজের নাম । আমি পরীক্ষা নিই নি তবে com.facebook.orca হ'ল ফেসবুক ম্যাসেঞ্জারের প্যাকেজের নাম যদি আপনিও এটি লক্ষ্য করতে চান।

আপনি হোয়াটসঅ্যাপ , টুইটারের সাথে ভাগ করে নেওয়ার জন্য আরও পদ্ধতি যুক্ত করতে পারেন ...

public class IntentShareHelper {

    /**
     * <b>Beware,</b> this shares only image if exists, or only text if image does not exits. Can't share both
     */
    public static void shareOnFacebook(AppCompatActivity appCompatActivity, String textBody, Uri fileUri) {
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT,!TextUtils.isEmpty(textBody) ? textBody : "");

        if (fileUri != null) {
            intent.putExtra(Intent.EXTRA_STREAM, fileUri);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            intent.setType("image/*");
        }

        boolean facebookAppFound = false;
        List<ResolveInfo> matches = appCompatActivity.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
        for (ResolveInfo info : matches) {
            if (info.activityInfo.packageName.toLowerCase().startsWith("com.facebook.katana") ||
                info.activityInfo.packageName.toLowerCase().startsWith("com.facebook.lite")) {
                intent.setPackage(info.activityInfo.packageName);
                facebookAppFound = true;
                break;
            }
        }

        if (facebookAppFound) {
            appCompatActivity.startActivity(intent);
        } else {
            showWarningDialog(appCompatActivity, appCompatActivity.getString(R.string.error_activity_not_found));
        }
    }

    public static void shareOnWhatsapp(AppCompatActivity appCompatActivity, String textBody, Uri fileUri){...}

    private static void showWarningDialog(Context context, String message) {
        new AlertDialog.Builder(context)
                .setMessage(message)
                .setNegativeButton(context.getString(R.string.close), new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                })
                .setCancelable(true)
                .create().show();
    }
}

ফাইল থেকে উরি পাওয়ার জন্য , ক্লাসের নীচে ব্যবহার করুন:

public class UtilityFile {
    public static @Nullable Uri getUriFromFile(Context context, @Nullable File file) {
        if (file == null)
            return null;

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            try {
                return FileProvider.getUriForFile(context, "com.my.package.fileprovider", file);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        } else {
            return Uri.fromFile(file);
        }
    }

    // Returns the URI path to the Bitmap displayed in specified ImageView       
    public static Uri getLocalBitmapUri(Context context, ImageView imageView) {
        Drawable drawable = imageView.getDrawable();
        Bitmap bmp = null;
        if (drawable instanceof BitmapDrawable) {
            bmp = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
        } else {
            return null;
        }
        // Store image to default external storage directory
        Uri bmpUri = null;
        try {
            // Use methods on Context to access package-specific directories on external storage.
            // This way, you don't need to request external read/write permission.
            File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "share_image_" + System.currentTimeMillis() + ".png");
            FileOutputStream out = new FileOutputStream(file);
            bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
            out.close();

            bmpUri = getUriFromFile(context, file);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return bmpUri;
    }    
}

ফাইলপ্রোভিডার লেখার জন্য , এই লিঙ্কটি ব্যবহার করুন: https://github.com/codepath/android_guides/wiki/Sharing-Content-with-Intters


4

এখানে আমি যা করেছি (পাঠ্যের জন্য)। কোডটিতে আমি ক্লিপবোর্ডে যা কিছু পাঠ্য প্রয়োজন তা অনুলিপি করি। কোনও ব্যক্তি প্রথমবার শেয়ারের উদ্দেশ্য বাটনটি ব্যবহার করার চেষ্টা করে, আমি একটি বিজ্ঞপ্তি পপ আপ করি যা ব্যাখ্যা করে যে তারা যদি ফেসবুকে শেয়ার করতে চান তবে তাদের 'ফেসবুক' ক্লিক করতে হবে এবং তারপরে পেস্ট করার জন্য দীর্ঘ প্রেস করতে হবে (এটি তাদের সচেতন করার জন্য যে ফেসবুক অ্যান্ড্রয়েড অভিপ্রায় সিস্টেমটি ব্রুকেন করেছে)। তারপরে সংশ্লিষ্ট তথ্য মাঠে রয়েছে। আমি এই পোস্টের একটি লিঙ্কও অন্তর্ভুক্ত করতে পারি যাতে ব্যবহারকারীরাও অভিযোগ করতে পারেন ...

private void setClipboardText(String text) { // TODO
    int sdk = android.os.Build.VERSION.SDK_INT;
    if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
        android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        clipboard.setText(text);
    } else {
        android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); 
        android.content.ClipData clip = android.content.ClipData.newPlainText("text label",text);
        clipboard.setPrimaryClip(clip);
    }
}

নীচে ডাব্লু / পূর্ববর্তী সংস্করণগুলির জন্য একটি পদ্ধতি রয়েছে a

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.menu_item_share:
        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.setType("text/plain");
        shareIntent.putExtra(Intent.EXTRA_TEXT, "text here");

        ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); //TODO
         ClipData clip = ClipData.newPlainText("label", "text here");
         clipboard.setPrimaryClip(clip);

        setShareIntent(shareIntent); 

        break;
    }
        return super.onOptionsItemSelected(item);
}

4

ললিপপ (21) এ, আপনি Intent.EXTRA_REPLACEMENT_EXTRASবিশেষত ফেসবুকের উদ্দেশ্যে লক্ষ্যটিকে ওভাররাইড করতে ব্যবহার করতে পারেন (এবং কেবলমাত্র একটি লিঙ্ক নির্দিষ্ট করে)

https://developer.android.com/references/android/content/Inttent.html#xtRA_REPLACEMENT_EXTRAS

private void doShareLink(String text, String link) {
  Intent shareIntent = new Intent(Intent.ACTION_SEND);
  shareIntent.setType("text/plain");
  Intent chooserIntent = Intent.createChooser(shareIntent, getString(R.string.share_via));

  // for 21+, we can use EXTRA_REPLACEMENT_EXTRAS to support the specific case of Facebook
  // (only supports a link)
  // >=21: facebook=link, other=text+link
  // <=20: all=link
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    shareIntent.putExtra(Intent.EXTRA_TEXT, text + " " + link);
    Bundle facebookBundle = new Bundle();
    facebookBundle.putString(Intent.EXTRA_TEXT, link);
    Bundle replacement = new Bundle();
    replacement.putBundle("com.facebook.katana", facebookBundle);
    chooserIntent.putExtra(Intent.EXTRA_REPLACEMENT_EXTRAS, replacement);
  } else {
    shareIntent.putExtra(Intent.EXTRA_TEXT, link);
  }

  chooserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  startActivity(chooserIntent);
}

2

ফেসবুকের 4.0.0 সংস্করণে দেখে মনে হচ্ছে অনেক কিছুই পরিবর্তিত হয়েছে। এটি আমার কোড যা ভাল কাজ করছে। আশা করি এটি আপনাকে সহায়তা করবে।

    /**
     * Facebook does not support sharing content without using their SDK however
     * it is possible to share URL
     *
     * @param content
     * @param url
     */
    private void shareOnFacebook(String content, String url)
    {
        try
        {
            // TODO: This part does not work properly based on my test
            Intent fbIntent = new Intent(Intent.ACTION_SEND);
            fbIntent.setType("text/plain");
            fbIntent.putExtra(Intent.EXTRA_TEXT, content);
            fbIntent.putExtra(Intent.EXTRA_STREAM, url);
            fbIntent.addCategory(Intent.CATEGORY_LAUNCHER);
            fbIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                    | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            fbIntent.setComponent(new ComponentName("com.facebook.katana",
                    "com.facebook.composer.shareintent.ImplicitShareIntentHandler"));

            startActivity(fbIntent);
            return;
        }
        catch (Exception e)
        {
            // User doesn't have Facebook app installed. Try sharing through browser.
        }

        // If we failed (not native FB app installed), try share through SEND
        String sharerUrl = "https://www.facebook.com/sharer/sharer.php?u=" + url;
        SupportUtils.doShowUri(this.getActivity(), sharerUrl);
    }

4
সাপোর্ট ইউটিলস কী?
সিলভিয়া এইচ

2

এই সমাধান পাশাপাশি কাজ করে। যদি কোনও ফেসবুক ইনস্টল করা না থাকে তবে এটি কেবল সাধারণ ভাগ করে নেওয়ার ডায়ালগ চালায়। যদি সেখানে থাকে এবং আপনি লগ ইন না করে থাকেন তবে এটি লগইন স্ক্রিনে যায়। আপনি লগ ইন থাকলে এটি ভাগ করে নেওয়ার ডায়লগটি খুলবে এবং ইন্টেন্ট এক্সট্রা থেকে "শেয়ার ইউআরএল" এ দেবে।

Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, "Share url");
intent.setType("text/plain");

List<ResolveInfo> matches = getMainFragmentActivity().getPackageManager().queryIntentActivities(intent, 0);
for (ResolveInfo info : matches) {
    if (info.activityInfo.packageName.toLowerCase().contains("facebook")) {
        intent.setPackage(info.activityInfo.packageName);
    }
}

startActivity(intent);

0

এখানে আমি এমন কিছু করেছি যা লিঙ্কের সাথে ফেসবুক অ্যাপ খুলবে

shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setComponent(new ComponentName("com.facebook.katana",
                    "com.facebook.katana.activity.composer.ImplicitShareIntentHandler"));

shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT,  videoUrl);

4
আমার জন্য কাজ করেনি। সম্ভবত ফেসবুক ইম্পিপ্লেশেয়ারইন্টেন্টহ্যান্ডলারের নাম পরিবর্তন করেছে।
হেসাম

0
    public void invokeShare(Activity activity, String quote, String credit) {
    Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, activity.getString(R.string.share_subject));
    shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Example text");    
    shareIntent.putExtra("com.facebook.platform.extra.APPLICATION_ID", activity.getString(R.string.app_id));                        
    activity.startActivity(Intent.createChooser(shareIntent, activity.getString(R.string.share_title)));
}

0

ফেসবুক এর সাথে সরল টেক্সট ডেটা ভাগ করার অনুমতি দেয় না Intent.EXTRA_TEXTতবে আপনি এটি ব্যবহার করে পাঠ্য + লিঙ্কটি ফেসবুক মেসানজারের সাথে ভাগ করতে পারেন, এটি আমার পক্ষে ভাল কাজ করে

            Intent sendIntent = new Intent();
            sendIntent.setAction(Intent.ACTION_SEND);
            sendIntent.putExtra(Intent.EXTRA_TEXT, text+url link);
            sendIntent.setType("text/plain");
            sendIntent.setPackage("com.facebook.orca");
            startActivity(sendIntent);

0

আমার অ্যাপ্লিকেশন থেকে ফেসবুকে কোনও বার্তা পৌঁছে দেওয়ার সবচেয়ে সহজ উপায়টি হ'ল প্রোগ্রামটিমে ক্লিপবোর্ডে অনুলিপি করা হয়েছিল এবং ব্যবহারকারীকে সতর্ক করা হয়েছিল যে তাদের পেস্ট করার বিকল্প রয়েছে। এটি ব্যবহারকারীকে ম্যানুয়ালি করা থেকে বাঁচায়; আমার অ্যাপ্লিকেশনটি আটকানো হচ্ছে না তবে ব্যবহারকারী সম্ভবত।

...
if (app.equals("facebook")) {
    // overcome fb 'putExtra' constraint;
    // copy message to clipboard for user to paste into fb.
    ClipboardManager cb = (ClipboardManager) 
            getSystemService(Context.CLIPBOARD_SERVICE);
    ClipData clip = ClipData.newPlainText("post", msg);
    cb.setPrimaryClip(clip);

    // tell the to PASTE POST with option to stop showing this dialogue
    showDialog(this, getString(R.string.facebook_post));
}
startActivity(appIntent);
...
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.