100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 分享google+facebook+twitter(Eclipse)

分享google+facebook+twitter(Eclipse)

时间:2018-09-17 23:34:05

相关推荐

分享google+facebook+twitter(Eclipse)

最近做游戏分享功能,遇到了这3大平台的分享,网上的介绍好多,但也不全,没有做到很详细的分享图片,文字,链接的介绍,所以我结合了一下,自己封装了3大平台的分享。

一,google+分享

不需要申请,直接代码。

1 图片和链接分享

​​public class GoogleShare {private static GoogleShare mInstance;public static GoogleShare getInstance() {if (mInstance == null) {mInstance = new GoogleShare();}return mInstance;}public void share(Activity mContext, String imagePath, String link, String title) {try {// 判断是否安装Google Serviceif (GooglePlayServicesUtil.isGooglePlayServicesAvailable(mContext) == ConnectionResult.SUCCESS) {//本地图片if (!imagePath.equals("")) {File file = new File(imagePath);Uri imageUri = URIUtil.getImageContentUri(mContext, file);Log.d("GoogleShare", imageUri.getPath());Intent shareIntent = new PlusShare.Builder(mContext).setType("image/*").setText(title).setStream(imageUri).getIntent();mContext.startActivityForResult(shareIntent, Constant.RC_GOOGLE_SHARE);}//链接if (!link.equals("")) {Intent shareIntent = new PlusShare.Builder(mContext).setType("text/*").setText(title).setContentUrl(Uri.parse(link)).getIntent();mContext.startActivityForResult(shareIntent, Constant.RC_GOOGLE_SHARE);}} else {Toast.makeText(mContext, "Please install Google Service", 0).show();}} catch (Exception e) {e.printStackTrace();}}public void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == Constant.RC_GOOGLE_SHARE) {if (resultCode == Activity.RESULT_OK) {//success} else if (resultCode == Activity.RESULT_CANCELED) {//cancel} else {//failure}}}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);GoogleShare.getInstance().onActivityResult(requestCode, resultCode, data);}

2 如果是从相册获取图片,也可以先对图片进行压缩再分享

​Intent intent = new Intent();intent.addCategory(Intent.CATEGORY_OPENABLE);intent.setType("image/*");if (Build.VERSION.SDK_INT < 19) {intent.setAction(Intent.ACTION_GET_CONTENT);} else {intent.setAction(Intent.ACTION_OPEN_DOCUMENT);}startActivityForResult(intent, 0);@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if (requestCode == 0 && resultCode == RESULT_OK) {Intent shareIntent = new PlusShare.Builder(this).setType("image/*").setText("title").setStream(data.getData()).getIntent();startActivityForResult(shareIntent, Constant.RC_GOOGLE_SHARE);}}​

3AndroidManifest.xml

<meta-dataandroid:name="com.google.android.gms.version"android:value="@integer/google_play_services_version" />

二 facebook分享

需要在平台创建应用和获取应用编号,具体我上一篇facebook登录说明了

1图片和链接分享

​public class FacebookShare {public static CallbackManager manager = CallbackManager.Factory.create();private static FacebookShare mInstance;private ShareDialog shareDialog;public static FacebookShare getInstance() {if (mInstance == null) {mInstance = new FacebookShare();}return mInstance;}public void share(Activity activity, String imagePath, String link, String title, String desc) {try {shareDialog = new ShareDialog(activity);shareDialog.registerCallback(manager, new FacebookCallback<Sharer.Result>() {@Overridepublic void onCancel() {//cancel}@Overridepublic void onError(FacebookException error) {//}@Overridepublic void onSuccess(Sharer.Result result) {//success}});if (imagePath != null) {if (ShareDialog.canShow(SharePhotoContent.class)) {// 本地图片Bitmap bitmap = BitmapFactory.decodeFile(imagePath);// 压缩图片Bitmap newBitmap = BitmapUtil.getBitmap(bitmap);SharePhoto photo = new SharePhoto.Builder().setCaption(title).setBitmap(newBitmap).build();SharePhotoContent photoContent = new SharePhotoContent.Builder().addPhoto(photo).build();shareDialog.show(photoContent);}}if (!link.equals("")) {if (ShareDialog.canShow(ShareLinkContent.class)) {// 链接ShareLinkContent linkContent = new ShareLinkContent.Builder().setContentTitle(title).setContentDescription(desc).setContentUrl(Uri.parse(link)).build();shareDialog.show(linkContent);}}} catch (Exception e) {e.printStackTrace();}}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);FacebookShare.manager.onActivityResult(requestCode, resultCode, data);}​​

2如果是从相册获取图片,也可以先对图片进行压缩再分享

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if (requestCode == 0 && resultCode == RESULT_OK) {SharePhoto photo = new SharePhoto.Builder().setCaption("title").setImageUrl(data.getData()).build();SharePhotoContent photoContent = new SharePhotoContent.Builder().addPhoto(photo).build();shareDialog.show(photoContent);}}

3AndroidManifest.xml

<meta-dataandroid:name="com.facebook.sdk.ApplicationId"android:value="@string/facebook_app_id" /><provider android:name="com.facebook.FacebookContentProvider" android:authorities="com.facebook.app.FacebookContentProvider1743673192422114"android:exported="true" /><!-- 浏览器分享卡片,未安装客户端时弹出 --><activityandroid:name="com.facebook.CustomTabActivity"android:exported="true" ><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:scheme="@string/fb_login_protocol_scheme" /></intent-filter></activity>

三 twitter分享

不需要申请,直接代码

1图片和链接分享

​public class TwitterShare {private static TwitterShare mInstance;public static TwitterShare getInstance() {if (mInstance == null) {mInstance = new TwitterShare();}return mInstance;}public void share(Activity mContext, String imagePath, String link, String title) {try {TwitterAuthConfig authConfig = new TwitterAuthConfig(mContext.getString(R.string.twitter_consumer_key),mContext.getString(R.string.twitter_consumer_secret));Fabric.with(mContext, new TwitterCore(authConfig));TweetComposer.Builder builder = new TweetComposer.Builder(mContext);builder.text(title);//本地图片if (!imagePath.equals("")) {File file = new File(imagePath);Uri imageUri = URIUtil.getImageContentUri(mContext, file);Log.d("TwitterShare", imageUri.getPath());builder.image(imageUri);}//链接if (!link.equals("")) {builder.url(new URL(link));}builder.show();} catch (Exception e) {e.printStackTrace();}}}​

<string name="twitter_consumer_key"></string><string name="twitter_consumer_secret"></string>这个key可以随便,但一定要有

2如果是从相册获取图片,也可以先对图片进行压缩再分享

​@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if (requestCode == 0 && resultCode == RESULT_OK) {//和上面一样,就是参数换了builder.image(data.getData());}}​

3 twitter分享回调

​public class TwitterResultReceiver extends BroadcastReceiver {private String UPLOAD_SUCCESS = "com.twitter.sdk.android.tweetcomposer.UPLOAD_SUCCESS";private String UPLOAD_FAILURE = "com.twitter.sdk.android.tweetcomposer.UPLOAD_FAILURE";private String TWEET_COMPOSE_CANCEL = "com.twitter.sdk.android.tweetcomposer.TWEET_COMPOSE_CANCEL";@Overridepublic void onReceive(Context context, Intent intent) {if (UPLOAD_SUCCESS.equals(intent.getAction())) {// success Twitter分享成功的回调} else if (UPLOAD_FAILURE.equals(intent.getAction())) {// failure} else if (TWEET_COMPOSE_CANCEL.equals(intent.getAction())) {// cancel}}}​

4AndroidManifest.xml

​<!-- Twitter分享的接受广播 --><receiverandroid:name="com.xnhd.japansdk.share.TwitterResultReceiver"android:exported="false" ><intent-filter><action android:name="com.twitter.sdk.android.tweetcomposer.UPLOAD_SUCCESS" /><action android:name="com.twitter.sdk.android.tweetcomposer.UPLOAD_FAILURE" /><action android:name="com.twitter.sdk.android.tweetcomposer.TWEET_COMPOSE_CANCEL" /></intent-filter></receiver><meta-data android:name="io.fabric.ApiKey" android:value="YOUR_API_KEY"/>经过验证,这个key可以随便,但一定要有​

Twitter这个分享回调好像没什么卵用!!!

四 工具类

public class BitmapUtil {// 压缩图片public static Bitmap getBitmap(Bitmap imageBitmp) {try {Bitmap newBitmap = null;ByteArrayOutputStream baos = new ByteArrayOutputStream();press(CompressFormat.JPEG, 30, baos);byte[] bytes = baos.toByteArray();newBitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);Log.i("wechat", "压缩后图片的大小" + (newBitmap.getByteCount() / 1024 / 1024) + "宽度为" + newBitmap.getWidth() + "高度为"+ newBitmap.getHeight() + "bytes.length= " + (bytes.length / 1024) + "KB");return newBitmap;} catch (Exception e) {e.printStackTrace();}return imageBitmp;}}public class URIUtil {/*** 绝对路径转uri** @param context* @param imageFile* @return content Uri*/public static Uri getImageContentUri(Context context, java.io.File imageFile) {String filePath = imageFile.getAbsolutePath();Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,new String[]{MediaStore.Images.Media._ID}, MediaStore.Images.Media.DATA + "=? ",new String[]{filePath}, null);if (cursor != null && cursor.moveToFirst()) {int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));Uri baseUri = Uri.parse("content://media/external/images/media");return Uri.withAppendedPath(baseUri, "" + id);} else {if (imageFile.exists()) {ContentValues values = new ContentValues();values.put(MediaStore.Images.Media.DATA, filePath);return context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);} else {return null;}}}}

五 如果想分享网络图片(http://)这样的,可以用工具将图片下载到本地,不过一般接入好像没有分享网络图片的,哈哈哈

jar,网络上很多,分享到此结束!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。