ChinaShare - Android社交分享組件

jopen 8年前發布 | 15K 次閱讀 Android開發 移動開發 ChinaShare

描述

每個應用程序中,都可能會有分享的需求,比如分享一個商品詳情頁或者一些活動到微博或者微信等社交平臺。 這個 lib 將分享相關的功能模塊化了,使用它你可以方便的實現自己項目的分享功能。

效果圖

效果圖

使用方法

1、將 share 模塊拷貝至自己項目

說明一下,因為 share 中有較多的 三方 lib jar文件,再加上他們可能會更新,所以 share lib 不會發布到 中央倉庫去,這里如果要使用,直接通過最粗暴的方式將 share 模塊直接拷貝至自己項目目錄,然后在setting 中加入 share 模塊

include ':app', ':share'

接著在項目 build 目錄中加入如下依賴路徑

compile project(':share')

2、在Application的onCreate方法中設置分享相關屬性

 @Override
    public void onCreate() {
        super.onCreate();

        //配置所有的分享方式
        LinkedHashMap<SHARE_MEDIA,Integer>iconMap = new LinkedHashMap<>();
        iconMap.put(SHARE_MEDIA.WEICHAT,R.drawable.share_weixin);
        iconMap.put(SHARE_MEDIA.WEICHATCIRCLE,R.drawable.share_momment);
        iconMap.put(SHARE_MEDIA.SINA,R.drawable.share_sina);
        iconMap.put(SHARE_MEDIA.QQ,R.drawable.share_qq);
        iconMap.put(SHARE_MEDIA.QQZONE,R.drawable.share_qzeon);
        iconMap.put(SHARE_MEDIA.MESSAGE, R.drawable.share_message);

        //初始化分享相關的key、appId 信息
        ShareManager.init()
                //應用的名字
                .setAppName("test")
                .setDefShareImageUrl("默認分享的圖片url")
                .addShareMedia(SHARE_MEDIA.WEICHAT, SHARE_MEDIA.WEICHATCIRCLE, SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.QQZONE, SHARE_MEDIA.MESSAGE)
                //如果要自定義分享的圖標,可以通過下面的方式進行設置,使用的默認分享圖標,注釋該方法即可
                //.setShareWayIconMap(iconMap)
                .setQQAppId("自己申請的appId")
                .setWeiboAppId("自己申請的appId")
                .setWechatAppId("自己申請的appId")
                .setSinaRedirectUrl("https://api.weibo.com/oauth2/default.html")
                .setScope("email,direct_messages_read,direct_messages_write,\"\n" +
                        "            + \"friendships_groups_read,friendships_groups_write,statuses_to_me_read,\"\n" +
                        "            + \"follow_app_official_microblog,\" + \"invitation_write")
                .setDefImageUrlId(R.drawable.ic_launcher);
    }

share lib 默認已經提供了一個很常見的分享界面,如上面截圖所示。 如果你的項目中的分享界面樣式跟這個有出入(這簡直是一定的),你可以直接修改layout文件 /layout/layout_share_grideview.xml

3、使用ShareView

ShareView可以在任何界面中使用。

  • 申明ShareView的一個實例

    ShareView mShareView;
  • 實例化ShareView 最好在onCreate時實例化

    mShareView = new ShareView(this,"分享");
    //可以移除對應的分享方式
    Setting.getInstance().removeShareMedia(SHARE_MEDIA.SINA, SHARE_MEDIA.WEICHAT);
    mShareView.setShareInfo(this, new TestImpl(this));
  • 顯示ShareView

    mShareView.show();

具體的分享內容通過實現AbsWarpTemplateShare類的子類來進行設置。TestImpl就是一個例子,如下

public class TestImpl extends AbsWarpTemplateShare {
    public DuoYongBaoShareImpl(Context context) {
        super(context);
    }

    @Override
    public IShareInfo warpWeichatInfo() {
        return new SimpleShareText("快來關注多傭寶",mContext.getString(R.string.share_duo_yongbao),"http://www.meiliwu.com","");
    }

    @Override
    public IShareInfo warpSinaInfo() {
        return new SimpleShareText("快來關注多傭寶",mContext.getString(R.string.share_duo_yongbao),"http://www.meiliwu.com","");
    }

    @Override
    public IShareInfo warpQQInfo() {
        return new SimpleShareText("快來關注多傭寶",mContext.getString(R.string.share_duo_yongbao),"http://www.meiliwu.com","");
    }

    @Override
    public IShareInfo warpMessageInfo() {
        return new SimpleShareText("快來關注多傭寶",mContext.getString(R.string.share_duo_yongbao),"http://www.meiliwu.com","");
    }
}

新浪微博分享

新浪微博文檔

1)新浪微博分享前準備工作 在進行新浪微博分享前,需要在AndroidManifest.xml中,在需要接收消息的Activity(喚起微博主程序的類)里聲明對應的Action:ACTION_SDK_REQ_ACTIVITY,如下所示:

  <activity
      android:name="com.sina.weibo.sdk.demo.WBShareActivity"
      android:configChanges="keyboardHidden|orientation"
      android:screenOrientation="portrait" >
      <intent-filter>
            <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
            <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
  </activity>

2)在進行新浪微博分享前,需要在分享Activity(喚起微博主程序的類)里重寫onActivityResult方法,并調用mShareView.setOnActivityResult(requestCode, resultCode, data)方法,如下所示:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        mShareView.setOnActivityResult(requestCode, resultCode, data);
    }

項目地址: https://github.com/maoruibin/ChinaShare

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!