Post 照片脸书 android
Post photo facebook android
我会在我的应用程序中创建一个带有照片和标题的 post,并在我的 Facebook 上 post。
我不确切知道需要的步骤,所以我不知道我做错了什么。
主 activity 在其 xml 中有一个 LoginButton 和一个 ShareButton。
我做到了:
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
public DBhelper database;
public CallbackManager callbackManager;
public ShareDialog shareDialog;
public ShareButton shareButton;
public SharePhotoContent sharePhotoContent;
}
这个class有:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
callbackManager = CallbackManager.Factory.create();
shareDialog = new ShareDialog(this);
shareButton=new ShareButton(this);
setContentView(R.layout.activity_main);
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("user_friends","public_profile");
get_login_details(loginButton);
shareButton=(ShareButton) findViewById(R.id.share_button);
sharePhotoContent=genera_share_photo_content();
shareButton.setShareContent(sharePhotoContent);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode,resultCode,data);
Log.e(TAG,data.toString());
}
还有这两个方法:
protected void get_login_details(LoginButton loginButton) {
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
Toast.makeText(getApplicationContext(),"SI",Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
// App code
Toast.makeText(getApplicationContext(),"CANCEL",Toast.LENGTH_LONG).show();
}
@Override
public void onError(FacebookException exception) {
// App code
Toast.makeText(getApplicationContext(),"NO",Toast.LENGTH_LONG).show();
}
});
}
public SharePhotoContent genera_share_photo_content() {
//code...
Bitmap image = ...
SharePhoto photo = new SharePhoto.Builder()
.setBitmap(image)
.build();
SharePhotoContent content = new SharePhotoContent.Builder()
.addPhoto(photo)
.build();
return content;
}
现在,分享内容是在开头制作的:我会使用 genera_share_photo_content()
使其动态化:
我怎样才能修改它?
我应该打电话给某个地方 shareDialog.show(content)
还是 ShareApi.share(content,null)
?
是我为登录按钮设置的 user_friends
和 public_profile
权限。足以使所有工作?
您必须添加以下权限:
"publish_actions"
并且在您的清单中,您必须包含这些标签
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<provider
android:name="com.facebook.FacebookContentProvider"
android:authorities="com.facebook.app.FacebookContentProvider1618161851808217"
android:exported="true" />
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
这样做:
private void sharePhotoToFacebook(){
String filePath = "path to your image";
String text = "your custom text";
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);
SharePhoto photo = new SharePhoto.Builder()
.setBitmap(bitmap)
.setCaption(text)
.build();
SharePhotoContent content = new SharePhotoContent.Builder()
.addPhoto(photo)
.setContentUrl(Uri.parse(text))
.build();
ShareApi.share(content,null);
Toast.makeText(getApplicationContext(),"Snapshot shared On Facebook",Toast.LENGTH_SHORT).show();
}
public void publishimage() {
Log.i("Android","publishing Image");
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
shareDialog = new ShareDialog(this);
java.util.List<String> permissionNeeds = Arrays.asList("publish_actions");
//this loginManager helps you eliminate adding a LoginButton to your UI
manager = LoginManager.getInstance();
manager.logInWithPublishPermissions(this, permissionNeeds);
manager.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
sharePhotoToFacebook();
}
@Override
public void onCancel() {
System.out.println("onCancel");
}
@Override
public void onError(FacebookException exception) {
System.out.println("onError");
}
});
}
点击按钮即:
btnshare.setOnclicklistener(new View.OnclickListener){
@Override
public void onClick(View V){
publishimage();
}
}
我会在我的应用程序中创建一个带有照片和标题的 post,并在我的 Facebook 上 post。 我不确切知道需要的步骤,所以我不知道我做错了什么。 主 activity 在其 xml 中有一个 LoginButton 和一个 ShareButton。 我做到了:
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
public DBhelper database;
public CallbackManager callbackManager;
public ShareDialog shareDialog;
public ShareButton shareButton;
public SharePhotoContent sharePhotoContent;
}
这个class有:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
callbackManager = CallbackManager.Factory.create();
shareDialog = new ShareDialog(this);
shareButton=new ShareButton(this);
setContentView(R.layout.activity_main);
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("user_friends","public_profile");
get_login_details(loginButton);
shareButton=(ShareButton) findViewById(R.id.share_button);
sharePhotoContent=genera_share_photo_content();
shareButton.setShareContent(sharePhotoContent);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode,resultCode,data);
Log.e(TAG,data.toString());
}
还有这两个方法:
protected void get_login_details(LoginButton loginButton) {
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
Toast.makeText(getApplicationContext(),"SI",Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
// App code
Toast.makeText(getApplicationContext(),"CANCEL",Toast.LENGTH_LONG).show();
}
@Override
public void onError(FacebookException exception) {
// App code
Toast.makeText(getApplicationContext(),"NO",Toast.LENGTH_LONG).show();
}
});
}
public SharePhotoContent genera_share_photo_content() {
//code...
Bitmap image = ...
SharePhoto photo = new SharePhoto.Builder()
.setBitmap(image)
.build();
SharePhotoContent content = new SharePhotoContent.Builder()
.addPhoto(photo)
.build();
return content;
}
现在,分享内容是在开头制作的:我会使用 genera_share_photo_content()
使其动态化:
我怎样才能修改它?
我应该打电话给某个地方 shareDialog.show(content)
还是 ShareApi.share(content,null)
?
是我为登录按钮设置的 user_friends
和 public_profile
权限。足以使所有工作?
您必须添加以下权限:
"publish_actions"
并且在您的清单中,您必须包含这些标签
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<provider
android:name="com.facebook.FacebookContentProvider"
android:authorities="com.facebook.app.FacebookContentProvider1618161851808217"
android:exported="true" />
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
这样做:
private void sharePhotoToFacebook(){
String filePath = "path to your image";
String text = "your custom text";
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);
SharePhoto photo = new SharePhoto.Builder()
.setBitmap(bitmap)
.setCaption(text)
.build();
SharePhotoContent content = new SharePhotoContent.Builder()
.addPhoto(photo)
.setContentUrl(Uri.parse(text))
.build();
ShareApi.share(content,null);
Toast.makeText(getApplicationContext(),"Snapshot shared On Facebook",Toast.LENGTH_SHORT).show();
}
public void publishimage() {
Log.i("Android","publishing Image");
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
shareDialog = new ShareDialog(this);
java.util.List<String> permissionNeeds = Arrays.asList("publish_actions");
//this loginManager helps you eliminate adding a LoginButton to your UI
manager = LoginManager.getInstance();
manager.logInWithPublishPermissions(this, permissionNeeds);
manager.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
sharePhotoToFacebook();
}
@Override
public void onCancel() {
System.out.println("onCancel");
}
@Override
public void onError(FacebookException exception) {
System.out.println("onError");
}
});
}
点击按钮即:
btnshare.setOnclicklistener(new View.OnclickListener){
@Override
public void onClick(View V){
publishimage();
}
}