Android 从Resources drawable文件夹在facebook上共享图像(帖子)

Android 从Resources drawable文件夹在facebook上共享图像(帖子),android,facebook,image,android-intent,share,Android,Facebook,Image,Android Intent,Share,我正在制作一个应用程序,我需要在facebook timeline上与文本共享一个图像。然而,通过我的代码,我可以共享到facebook墙的链接,但不能共享图像。我已经尝试了堆栈溢出的大部分代码。但是还没有成功。这是我的密码 MainActivity.java package com.example.test2; import com.facebook.android.Facebook; import android.net.Uri; import android.os.Bundle;

我正在制作一个应用程序,我需要在facebook timeline上与文本共享一个图像。然而,通过我的代码,我可以共享到facebook墙的链接,但不能共享图像。我已经尝试了堆栈溢出的大部分代码。但是还没有成功。这是我的密码

MainActivity.java

 package com.example.test2;



import com.facebook.android.Facebook;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;
公共类MainActivity扩展了活动{

String[] ShareOption;
Spinner ShareOptionList;
int driverStarScore = 1; //2 or 3 ...
Facebook facebookClient;    
SharedPreferences mPrefs;

ListView list;

 String[] ShareItemName ={

 "Dropbox",
 "Email",
 "Facebook",
 "Google Plus",
 "Twitter",
 "Whatsapp",

 };

 Integer[] ShareImageId={

         R.drawable.ic_dropbox,
         R.drawable.ic_email,
         R.drawable.ic_facebook,
         R.drawable.ic_googleplus,
         R.drawable.ic_twitter,
         R.drawable.ic_whatsapp,

         };
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);






    ShareOptionList=(Spinner) findViewById(R.id.spinner_ShareScore);
    ShareOption=getResources().getStringArray(R.array.ShareChooseOption);
    ArrayAdapter<String> adapter1=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,ShareOption);
    ShareOptionList.setAdapter(adapter1);

    ShareOptionList.setOnItemSelectedListener(new OnItemSelectedListener(){

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            // TODO Auto-generated method stub
            int index=arg0.getSelectedItemPosition();
            Toast.makeText(getBaseContext(), "You select "+ ShareOption[index],Toast.LENGTH_LONG).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            // TODO Auto-generated method stub

        }



    });




    ShareListAdapter adapter=new ShareListAdapter(this, ShareItemName, ShareImageId);
    list=(ListView)findViewById(R.id.listview_share);
    list.setAdapter(adapter);

    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
         public void onItemClick(AdapterView<?> parent, View view,
         int position, long id) {
         // TODO Auto-generated method stub
         String Selecteditem= ShareItemName[+position];

         Toast.makeText(MainActivity.this, Selecteditem, Toast.LENGTH_SHORT).show();

         if(Selecteditem=="Facebook"){  


            // if (driverStarScore == 1){
                 //Uri pngUri = Uri.parse("file//res/drawable/star_1.png");
            // }
             //if (driverStarScore == 2){
                // Uri pngUri = Uri.parse("file//res/drawable/star_2.png");
        // }

            String urlToShare = "http://tinypic.com/r/16gil4y/8";

             try {

                    Intent facebook1 = new Intent();
                    facebook1.setClassName("com.facebook.katana", "com.facebook.katana.activity.composer.ImplicitShareIntentHandler");
                    facebook1.setAction("android.intent.action.SEND");
                    facebook1.setType("image/png");
                    facebook1.putExtra("android.intent.extra.TEXT", urlToShare);
                    startActivity(facebook1);

             } catch (Exception e) {
                    // If we failed (not native FB app installed), try share through SEND
                    Intent facebook = new Intent(Intent.ACTION_SEND);
                    String sharerUrl = "https://www.facebook.com/sharer/sharer.php?u=" + urlToShare;
                    facebook = new Intent(Intent.ACTION_VIEW, Uri.parse(sharerUrl));
                    startActivity(facebook);
                }


         }
         if(Selecteditem=="Email"){
            Intent email = new Intent(Intent.ACTION_SEND);

            email.setType("message/rfc822");
            email.putExtra(Intent.EXTRA_EMAIL  , new String[]{"recipient@example.com"}); // if you want to add email address also.
            email.putExtra(android.content.Intent.EXTRA_TEXT, "Sample Text");
            email.putExtra(Intent.EXTRA_SUBJECT, "Driving Score Email");

            try {
                startActivity(Intent.createChooser(email, "Send mail..."));
            } catch (android.content.ActivityNotFoundException ex) {
                Toast.makeText(MainActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
            }
         }

        }
         });



}
}

AndroidManifest.xml

        <?xml version="1.0" encoding="utf-8"?>
        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
            package="com.example.test2"
            android:versionCode="1"
            android:versionName="1.0" >

            <uses-sdk
                android:minSdkVersion="16"
                android:targetSdkVersion="18" />

            <application
                android:allowBackup="true"
                android:icon="@drawable/ic_launcher"
                android:label="@string/app_name"
                android:theme="@style/AppTheme" >
                <activity
                    android:name=".MainActivity"
                    android:label="@string/app_name" >
                    <intent-filter>
                        <action android:name="android.intent.action.MAIN" />

                        <category android:name="android.intent.category.LAUNCHER" />
                    </intent-filter>
                </activity>
                <activity
                    android:name=".Menu"
                    android:label="@string/app_name" >
                    <intent-filter>
                        <action android:name="android.intent.action.Menu" />
                        <data android:mimeType="image/png" />
                        <category android:name="android.intent.category.DEFAULT" />
                    </intent-filter>
                </activity>

              <activity
                        android:name="com.sample.socialshare.facebookUpload"
                        android:label="@string/app_name"
                        android:theme="@android:style/Theme.DeviceDefault.Dialog">
                        <intent-filter>
                            <action android:name="android.intent.action.VIEW" />
                            <category android:name="android.intent.category.DEFAULT" />
                        </intent-filter>
                </activity>


                        </application>
                <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>


        </manifest>

与Facebook共享内容的推荐且更简单的方法是使用。 你可以在Facebook开发者网站上找到关于如何和的文档


注意:直接调用共享对话框,虽然它可以工作,但不受支持,并且可能随时中断,因此绝对不建议使用该对话框。

建议使用Facebook共享内容的更简单方法是使用。 你可以在Facebook开发者网站上找到关于如何和的文档


注意:直接调用共享对话框虽然有效,但不受支持,并且可能随时中断,因此绝对不建议这样做。

非常感谢您的回答。事实上,我是android应用程序开发的新手。我已经在facebook页面上看到了共享功能。但我对程序不清楚。您是否有任何特定的程序来共享我在facebook上的应用程序中的图像和文本@Rafael@nowshinrea,要共享图像,您可以使用或直接使用。文档中的共享页面对此进行了很好的解释。无论如何,我建议你尝试一下,如果你有任何问题,用新代码打开一个新的bug。非常感谢你的回答。事实上,我是android应用程序开发的新手。我已经在facebook页面上看到了共享功能。但我对程序不清楚。您是否有任何特定的程序来共享我在facebook上的应用程序中的图像和文本@Rafael@nowshinrea,要共享图像,您可以使用或直接使用。文档中的共享页面对此进行了很好的解释。无论如何,我建议您尝试一下,如果您有任何问题,用新代码打开一个新的bug。
        <?xml version="1.0" encoding="utf-8"?>
        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
            package="com.example.test2"
            android:versionCode="1"
            android:versionName="1.0" >

            <uses-sdk
                android:minSdkVersion="16"
                android:targetSdkVersion="18" />

            <application
                android:allowBackup="true"
                android:icon="@drawable/ic_launcher"
                android:label="@string/app_name"
                android:theme="@style/AppTheme" >
                <activity
                    android:name=".MainActivity"
                    android:label="@string/app_name" >
                    <intent-filter>
                        <action android:name="android.intent.action.MAIN" />

                        <category android:name="android.intent.category.LAUNCHER" />
                    </intent-filter>
                </activity>
                <activity
                    android:name=".Menu"
                    android:label="@string/app_name" >
                    <intent-filter>
                        <action android:name="android.intent.action.Menu" />
                        <data android:mimeType="image/png" />
                        <category android:name="android.intent.category.DEFAULT" />
                    </intent-filter>
                </activity>

              <activity
                        android:name="com.sample.socialshare.facebookUpload"
                        android:label="@string/app_name"
                        android:theme="@android:style/Theme.DeviceDefault.Dialog">
                        <intent-filter>
                            <action android:name="android.intent.action.VIEW" />
                            <category android:name="android.intent.category.DEFAULT" />
                        </intent-filter>
                </activity>


                        </application>
                <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>


        </manifest>