How to Share Image using Facebook android

前端 未结 3 1535
被撕碎了的回忆
被撕碎了的回忆 2020-12-20 01:13

I am trying to share Image and Content via Facebook,but what i am trying is if user is not logged in via Facebook,and user click on Share button then first it should ask for

相关标签:
3条回答
  • 2020-12-20 01:16

    You need to call below code on click of button from adapter.

    List<String> permissionNeeds = Arrays.asList("publish_actions");
    
    		manager = LoginManager.getInstance();
    
    		manager.logInWithPublishPermissions(this, permissionNeeds);
    
    		manager.registerCallback(callbackManager,
    				new FacebookCallback<LoginResult>() {
    					@Override
    					public void onSuccess(LoginResult loginResult) {
    						publishImage();
    
    					}
    
    					@Override
    					public void onCancel() {
    						System.out.println("onCancel");
    					}
    
    					@Override
    					public void onError(FacebookException exception) {
    						System.out.println("onError");
    					}
    				});
    
    	}
    
    
        private void publishImage() {
    		Bitmap image = BitmapFactory.decodeResource(getResources(),
    				R.drawable.ic_launcher);
    
        //You need to get bitmap from any source.
    
    		SharePhoto photo = new SharePhoto.Builder().setBitmap(image)
    				.setCaption("Welcome To Facebook Photo Sharing on steroids!")
    				.build();
    
    		SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(
    				photo).build();
    
    		ShareApi.share(content, null);
    		Toast.makeText(this, "Succsesfully posted on your wall",
    				Toast.LENGTH_LONG).show();
    
    	}

    0 讨论(0)
  • 2020-12-20 01:34
    first add 
    FacebookSdk.sdkInitialize(getApplicationContext());
    callbackManager = CallbackManager.Factory.create();    
    permissionNeeds = Arrays.asList("publish_actions");
            manager = LoginManager.getInstance();   
    **on onCreate and wirte below code in send button lick event**
     send.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
    
                            if (isOnline()) {
                                new WebView(MainActivity.this);
    
                                manager.logInWithPublishPermissions(MainActivity.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) {
    
                                        exception.printStackTrace();
                                    }
                                });
    
    
                                alertDialog.dismiss();
                            } else {
                                Toast.makeText(getBaseContext(), "Please check internet connection", Toast.LENGTH_SHORT).show();
                            }
    
                        }
                    });
    
    
         private void sharePhotoToFacebook() {
                try {
                    Log.i("Facebook Image", camera_pathname + "");
                    Bitmap image = BitmapFactory.decodeFile(camera_pathname);
                    //Bitmap image = decodeFile(camera_pathname);
                    image = getResizedBitmap(image);
                    //Bitmap image = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
    
                    SharePhoto photo = new SharePhoto.Builder()
                            .setBitmap(image)
                            .setCaption(et_hashtag.getText().toString())
                            .build();
    
                    SharePhotoContent content = new SharePhotoContent.Builder()
                            .addPhoto(photo)
                            .build();
    
                    ShareApi.share(content, null);
                    Toast.makeText(getBaseContext(), "Shared successfully", Toast.LENGTH_SHORT).show();
                } catch (Exception e) {
                    e.printStackTrace();
                }
    
                // manager.logOut();
            }
    
    0 讨论(0)
  • 2020-12-20 01:41

    First time when you try to log in, access token is null. So, it is going on else part. Do this in else part, I think so it may work for you :

    LoginManager.getInstance().registerCallback(mcallbackManager, new FacebookCallback<LoginResult>()
                {
                @Override
                public void onSuccess(LoginResult loginResult) {
    
                    GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject jsonObject, GraphResponse graphResponse) {
    
    }
    });
    
    }
    });
    
    0 讨论(0)
提交回复
热议问题