Android - Share on Facebook, Twitter, Mail, ecc

后端 未结 13 2529
眼角桃花
眼角桃花 2020-11-27 09:43

I need to develop an app that has the share function. I have to share on Facebook, twitter, email and maybe other services.

How can I do this? There a library on th

13条回答
  •  情话喂你
    2020-11-27 10:16

    Share on Facebook

    private ShareDialog shareDialog;
    
    shareDialog = new ShareDialog((AppCompatActivity) context);
    shareDialog.registerCallback(callbackManager, new FacebookCallback() {
        @Override
        public void onSuccess(Sharer.Result result) {
            Log.e("TAG","Facebook Share Success");
            logoutFacebook();
        }
    
        @Override
        public void onCancel() {
            Log.e("TAG","Facebook Sharing Cancelled by User");
        }
    
        @Override
        public void onError(FacebookException error) {
            Log.e("TAG","Facebook Share Success: Error: " + error.getLocalizedMessage());
        }
    });
    
    if (ShareDialog.canShow(ShareLinkContent.class)) {
        ShareLinkContent linkContent = new ShareLinkContent.Builder()
                .setQuote("Content goes here")
                .setContentUrl(Uri.parse("URL goes here"))
                .build();
        shareDialog.show(linkContent);
    }
    
    AndroidManifest.xml
    
    
    
    
    
    dependencies {
        implementation 'com.facebook.android:facebook-share:[5,6)' //Facebook Share
    }
    

    Share on Twitter

    public void shareProductOnTwitter() {
        TwitterConfig config = new TwitterConfig.Builder(this)
                .logger(new DefaultLogger(Log.DEBUG))
                .twitterAuthConfig(new TwitterAuthConfig(getResources().getString(R.string.twitter_api_key), getResources().getString(R.string.twitter_api_secret)))
                .debug(true)
                .build();
        Twitter.initialize(config);
    
        twitterAuthClient = new TwitterAuthClient();
    
        TwitterSession twitterSession = TwitterCore.getInstance().getSessionManager().getActiveSession();
    
        if (twitterSession == null) {
            twitterAuthClient.authorize(this, new Callback() {
                @Override
                public void success(Result result) {
                    TwitterSession twitterSession = result.data;
                    shareOnTwitter();
                }
    
                @Override
                public void failure(TwitterException e) {
                    Log.e("TAG","Twitter Error while authorize user " + e.getMessage());
                }
            });
        } else {
            shareOnTwitter();
        }
    }
    
    private void shareOnTwitter() {
        StatusesService statusesService = TwitterCore.getInstance().getApiClient().getStatusesService();
        Call tweetCall = statusesService.update("Content goes here", null, false, null, null, null, false, false, null);
        tweetCall.enqueue(new Callback() {
            @Override
            public void success(Result result) {
                Log.e("TAG","Twitter Share Success");
                logoutTwitter();
            }
    
            @Override
            public void failure(TwitterException exception) {
                Log.e("TAG","Twitter Share Failed with Error: " + exception.getLocalizedMessage());
            }
        });
    }
    

提交回复
热议问题