Android-友盟社会化共有ライブラリ&カスタム共有

14384 ワード

友盟の分かち合い、毎回単独で配置して、少し面倒で、ライブラリを整えました
Androidの共有機能は友盟用が多く、一般的には持参した共有パネルが需要を満たしているが、自分のプロジェクトでボタンをクリックして直接ジャンプして共有する必要がある場合もあるので、持参したものはあまり力が入らない.ここではプロジェクトのカスタム共有機能を記録し、公式ドキュメントにもどのように処理するかを説明していますが、接触したばかりの人にとってはそれほど明らかではないかもしれません.ここに記録して、ドキュメントを見て、それからやります!
  :            、    ,    QQ、Qzone   、        
                      QQ APPID,         。

一、配置は私が全体の分かち合いの部分を依存庫にしたため、QQの微信の必要なものを除いて、依存するだけでいいです
  • 1.登録してSDKをダウンロードして、QQの微信のIDを用意します.
  • 2.SDKを設定します.

  • プロジェクトのbuild.gradle加入コード
    allprojects {
          repositories {
             ...
             maven { url "https://jitpack.io" }
          }
       }

    moduleのbuild.gradle加入
       dependencies {
               compile 'com.github.paradoxie:UmengSocialLibrary:0.2'//0.2  V7   23.3.0
                //   22     0.3  ,v7 22.0.+,            
       }
  • 3.構成manifest.xmlの権限と必要なactivity
  • これで友盟のメソッドを呼び出すことができます
    二、友盟集積の分かち合い
    友盟共有Controllerメンバー変数の追加
    private final UMSocialService mSocialService =
    UMServiceFactory.getUMSocialService("com.umeng.share");

    共有を喚起するクリックイベントに次の項目を追加します.
    mSocialService.setShareContent("    ");
    mSocialService.setShareMedia(new UMImage(SettingActivity.this,   ));
    mSocialService.getConfig().removePlatform(SHARE_MEDIA.SINA, SHARE_MEDIA.TENCENT);

    //微信プラットフォームの追加
    UMWXHandler wxHandler = new UMWXHandler(SettingActivity.this, appId, appSecret);
    wxHandler.addToSocialSDK();
    wxHandler.setTitle(getString(R.string.app_name));
    wxHandler.setTargetUrl(getString(R.string.sms_spread_url));

    //微信モーメンツの追加
    UMWXHandler wxCircleHandler = new UMWXHandler(SettingActivity.this, appId, appSecret);
    wxCircleHandler.setToCircle(true);
    wxCircleHandler.addToSocialSDK();
    wxCircleHandler.setTitle(getString(R.string.app_name));
        wxCircleHandler.setTargetUrl(getString(R.string.sms_spread_url));

    //パラメータ1は現在のActivity、パラメータ2は開発者がQQで申請するAPP ID、パラメータ3は開発者がQQで申請するAPP kEY
    UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(SettingActivity.this, "APP ID", "APP KEY");
    qqSsoHandler.addToSocialSDK();
    qqSsoHandler.setTitle(getString(R.string.app_name));
    qqSsoHandler.setTargetUrl(getString(R.string.sms_spread_url));
    
    //  1   Activity,  2     QQ     APP ID,  3     QQ     APP kEY.
    
    QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(SettingActivity.this, "APP ID","APP KEY");
    qZoneSsoHandler.addToSocialSDK();
    qZoneSsoHandler.setTargetUrl(getString(R.string.sms_spread_url));

    最後に
     mSocialService.openShare(SettingActivity.this, false);
    

    三、カスタム共有パネル
    まずは公式文書の作り方を見て
    new ShareAction(this)
    .setPlatform(SHARE_MEDIA.SINA)
    .setCallback(umShareListener)
    .withText("hello umeng video")
    .withTargetUrl("http://www.baidu.com")
    .withMedia(image).share();

    コールバックインタフェースを書き換える必要があるumShareListenerが送信されました.
    new UMShareListener() { 
        @Override 
        public void onResult(SHARE_MEDIA platform) {  
               Toast.makeText(ShareActivity.this,platform + "      ", Toast.LENGTH_SHORT).show();
         } 
    
        @Override
        public void onError(SHARE_MEDIA platform, Throwable t) { 
               Toast.makeText(ShareActivity.this,platform + "      ", Toast.LENGTH_SHOR T).show(); 
        } 
        @Override 
        public void onCancel(SHARE_MEDIA platform) { 
                Toast.makeText(ShareActivity.this,platform + "      ", Toast.LENGTH_SHORT).show(); 
        } 
      };

    正直に言うと、初めて見たのはちょっと無理でした...
    *分割線があるふりをする.....
    自分のことを始めます.
    まず、自分のパネルであるパネルがない...つまり,任意のボタンで共有を呼び起こすことができるので,クリックイベントに応答する方法が必要である.その前に、サポートされているプラットフォームの初期化をSocialSDKに追加し、コントロールを初期化する前に:
    private void prepareShare(){
        //       
        UMWXHandler wxHandler = new UMWXHandler(this, Common.APP_ID, Common.APP_SECRET);
        wxHandler.addToSocialSDK();
        //        
        UMWXHandler wxCircleHandler = new UMWXHandler(this, Common.APP_ID, Common.APP_SECRET);
        wxCircleHandler.setToCircle(true);
        wxCircleHandler.addToSocialSDK();
        //  QQ
        UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(this, "APP ID","APP KEY");
        qqSsoHandler.addToSocialSDK();
        //QQ    
        QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(this, "APP ID","APP KEY");
        qZoneSsoHandler.addToSocialSDK();
        //         
        //SinaSsoHandler sinaSsoHandler = new SinaSsoHandler(this);
        //sinaSsoHandler.addToSocialSDK();
    }

    クラスメンバー変数mController:
        private final UMSocialService mController =             
        UMServiceFactory.getUMSocialService("com.umeng.share", RequestType.SOCIAL);

    その後、公式のカスタム共有方法のカプセル化を開始し、リスニングをコールバックし、多くのパラメータを抽象化し、クリックイベントで直接値を伝えることができます.
        /** 
        *            *
        * @param context        
        * @param mController      
        * @param var              
        * @param content        
        */
        public static void shareToFriend(Context context, final UMSocialService mController, SHARE_MEDIA var, BaseShareContent content) {    
        //        WeiXinShareContent weixinContent = new WeiXinShareContent();    
                //          
                content.setShareContent("  ");    
                //  title    
                content.setTitle("  ");    
                //        URL
                content.setTargetUrl("WWW.BAIDU.COM" );    
                //          
                UMImage img = new UMImage(context, R.drawable.ic_launcher);    
                content.setShareImage(img);
                mController.setShareMedia(content);    
                setShareBtn(context, mController, var);
        }
    
        /** 
        *         * 
        * @param context         
        * @param mController      
        * @param var              
        */
        private static void setShareBtn(final Context context, final UMSocialService mController, SHARE_MEDIA var) {  
        mController.postShare(context, var, new SocializeListeners.SnsPostListener() {
                @Override                
                public void onStart() {                
                  }               
             @Override                
                public void onComplete(SHARE_MEDIA arg0, int eCode,SocializeEntity arg2) {
                    if (eCode == 200) {
                    } else {
                        String eMsg = "";
                        if (eCode == -101) {
                            eMsg = "    ";
                        }
                    } 
               }
            });

    }
    例えば上のSHARE_MEDIAパラメータは、SHARE_に入力できます.MEDIA.WEIXIN、微博QQ類推.最後のパラメータはBaseShareContentタイプで、実際のパラメータはnewプラットフォームオブジェクトであればよい.例えば、new QZoneShareContent()がパラメータとして入力される方法である.
    パッケージング後のクリックイベント
        //    
        shareToFriend(this, mController, SHARE_MEDIA.SINA, new SinaShareContent());
        //QQ  
        shareToFriend(this, mController, SHARE_MEDIA.QZONE, new QZoneShareContent());
        //QQ
        shareToFriend(this, mController, SHARE_MEDIA.QQ, new QQShareContent());
        //  
        shareToFriend(this, mController, SHARE_MEDIA.WEIXIN, new WeiXinShareContent());
        //     
        shareToFriend(this, mController, SHARE_MEDIA.WEIXIN_CIRCLE, new CircleShareContent());

    ここまで来ればOKです(^^)
    より直感的なシステムの使用はプロジェクト内のDemoを参照してください.