• 友盟第三方登录和分享的使用


    获取友盟Appkey
    如果你之前已经在友盟注册了应用,并获取到了Appkey,可以继续使用它.

    如果你尚未在友盟注册开发者账号,需要先注册,注册之后登录你的账号,点击添加新应用,填写完应用基本信息后,将进入"下载SDK并添加代码"页面,此页面即可得到Appkey。

    下载并安装SDK
    * 下载[SDK最新版](http://dev.umeng.com/social/android/sdk-download)
    * 添加代码和资源引用,我们提供了两种方式,可以根据需求选择
     
        A.解压SDK压缩包,将文件夹中的social_sdk_library_project文件夹导入Eclipse,并在您的工程中添加对此项目的引用即可。
        
        B.解压SDK压缩包,将文件夹中的'main/libs'和'main/res'文件夹复制到你的项目工程根目录下(如使用'ADT 17'以下用户需要手动添加'libs'下的jar文件到工程Path中),同时将需要添加的对应平台(platform文件夹下)的jar包和res文件放到你的工程目录下
    * AndroidManifest配置

    
    
    //增加一个activity
    <activity           android:name="com.umeng.socialize.editorpage.ShareActivity"
    android:theme="@style/Theme.UMDefault"
    android:excludeFromRecents="true"/>
    // 设置友盟appid
    <meta-data
    android:name="UMENG_APPKEY"
    android:value="4eaee02c527015373b000003" >
    </meta-data>
     
     1 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     2     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     3     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     4     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     5     <uses-permission android:name="android.permission.INTERNET" />
     6     <uses-permission android:name="android.permission.READ_LOGS" />
     7     <uses-permission android:name="android.permission.CALL_PHONE" />
     8     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     9     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    10         <uses-permission android:name="android.permission.GET_TASKS" />
    11     <uses-permission android:name="android.permission.SET_DEBUG_APP" />
    12     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    13     <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    14     <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    15     <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />

    针对不平台所需要添加的数据

     1  微信平台
     2  
     3 <activity
     4             android:name="com.umeng.example.wxapi.WXEntryActivity"
     5             android:configChanges="keyboardHidden|orientation|screenSize"
     6             android:exported="true"
     7             android:screenOrientation="portrait"
     8             android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 9         
    10 人人网
    11 
    12 <activity
    13             android:name="com.renn.rennsdk.oauth.OAuthActivity"
    14             android:configChanges="orientation|navigation|keyboardHidden" />15 
    16 腾讯
    17 
    18<activity
    19   android:name="com.tencent.tauth.AuthActivity"
    20  android:launchMode="singleTask"
    21  android:noHistory="true" >
    22 <intent-filter>
    23 <action android:name="android.intent.action.VIEW" />
    24   <category android:name="android.intent.category.DEFAULT" />
    25 <category android:name="android.intent.category.BROWSABLE" />
    26 <data android:scheme="tencent100424468" />
    27  </intent-filter>
    28   </activity>
    29  <activity          android:name="com.tencent.connect.common.AssistActivity"
    30             android:screenOrientation="portrait"
    31             android:theme="@android:style/Theme.Translucent.NoTitleBar" />32 
    33 谷歌地图
    34       
    35 <uses-library
    36             android:name="com.google.android.maps"
    37             android:required="false" />
    38         <uses-library android:name="android.test.runner" />39 facebook
    40 <activity
    41             android:name="com.facebook.FacebookActivity"
    42             android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    43             android:label="@string/app_name"
    44             android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    45         <provider         android:name="com.facebook.FacebookContentProvider"         android:authorities="com.facebook.app.FacebookContentProvider+appid"
    46 android:exported="true" />
    47  <meta-data
    48   android:name="com.facebook.sdk.ApplicationId"
    49   android:value="@string/facebook_app_id" />50 
    51 新浪微博
    52 
    53  <activity
    54             android:name=".WBShareActivity"
    55             android:configChanges="keyboardHidden|orientation"
    56             android:screenOrientation="portrait" >
    57             <intent-filter>
    58                 <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
    59                 <category android:name="android.intent.category.DEFAULT" />
    60             </intent-filter>
    61         </activity> 
    62 <activity
    63             android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
    64             android:configChanges="keyboardHidden|orientation"
    65             android:windowSoftInputMode="adjustResize"
    66             android:exported="false" >
    67         </activity>68         
    69 <service android:name="com.sina.weibo.sdk.net.DownloadService"
    70             android:exported="false"></service>71             
    72 支付宝
    73 
    74<activity
    75             android:name=".apshare.ShareEntryActivity"
    76             android:configChanges="keyboardHidden|orientation|screenSize"
    77             android:exported="true"
    78             android:screenOrientation="portrait"
    79             android:theme="@android:style/Theme.Translucent.NoTitleBar" />

    4.  打开平台选择面板

    4.1  各个平台的配置,建议放在全局Application或者程序入口

    1 PlatformConfig.setWeixin("wx967daebe835fbeac", "5bb696d9ccd75a38c8a0bfe0675559b3"); //微信 appid appsecret
    2 PlatformConfig.setSinaWeibo("3921700954","04b48b094faeb16683c32669824ebdad");//新浪微博 appkey appsecret    
    3 
    4 PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");//易信 appkey       
    5 
    6 PlatformConfig.setRenren("201874","28401c0964f04a72a14c812d6132fcef","3bf66e42db1e4fa9829b955cc300b737");//人人 appid appkey appsecret
    7 PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba"); // qq qzone appid appkey
    8 PlatformConfig.setAlipay("2015111700822536");//alipay appid

    说明:需要使用第三方公司api的平台,新浪,腾讯等,是需要去申请appkey的。人人豆瓣只能在服务器端设置。其它需要配置appid的平台,如qq,微信,易信,twitter等都需要在本地设置。还有一部分平台需要在mainfest中配置,前面已经提到过。
    授权
    目前友盟社会化组件支持的第三方登录平台为:新浪微博、QQ、微信、人人网、豆瓣。(特别说明:QQ空间,qq微博使用qq授权)
    首先获取UMShareAPI

    1  private UMShareAPI mShareAPI;
    2 mShareAPI = UMShareAPI.get( this ); 

    选取需要授权的平台,并进行授权,其中umAuthLisrener是回调监听器,需要开发者根据需求重新定义

     1 SHARE_MEDIA platform = SHARE_MEDIA.SINA; 
     2      mShareAPI.doOauthVerify(this, platform, umAuthListener)
     3      private UMAuthListener umAuthListener = new UMAuthListener() {
     4         @Override
     5         public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
     6             Toast.makeText( getApplicationContext(), "Authorize succeed", Toast.LENGTH_SHORT).show();
     7         }
     8 
     9         @Override
    10         public void onError(SHARE_MEDIA platform, int action, Throwable t) {
    11             Toast.makeText( getApplicationContext(), "Authorize fail", Toast.LENGTH_SHORT).show();
    12         }
    13 
    14         @Override
    15         public void onCancel(SHARE_MEDIA platform, int action) {
    16             Toast.makeText( getApplicationContext(), "Authorize cancel", Toast.LENGTH_SHORT).show();
    17         }
    18     };

    对于删除授权使用的接口是

    mShareAPI.deleteOauth(AuthActivity.this, platform, umdelAuthListener);

    注意要重写

    1 onActivityResult()
    2 
    3      @Override
    4     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    5         super.onActivityResult(requestCode, resultCode, data);
    6         mShareAPI.onActivityResult(requestCode, resultCode, data);
    7     } 

    平台授权,是需要安装对应的客户端的。新浪微博,豆瓣网,人人网除外,这三个平台如果本地安装了对应平台是走本地授权,如果没有安装,需要走网络授权

    分享

    自定义shareboard:

     1 final SHARE_MEDIA[] displaylist = new SHARE_MEDIA[]
     2                         {
     3                             SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE,SHARE_MEDIA.SINA,
     4                             SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE,SHARE_MEDIA.DOUBAN
     5                         };
     6                 new ShareAction(this).setDisplayList( displaylist )
     7                         .withText( "呵呵" )
     8                         .withMedia( image )
     9                         .setShareboardclickCallback(shareBoardlistener)
    10                         .open();
    11 自定义shareboard需要,指明需要显示的平台,放入shareaction中,并执行open方法即可。
    12 shareboard点击响应回调方法如下:
    13 
    14      private ShareBoardlistener shareBoardlistener = new ShareBoardlistener() {
    15 
    16         @Override
    17         public void onclick(SHARE_MEDIA share_media) {
    18           
    19         }
    20     };

    单平台直接分享:

    1 new ShareAction(this)
    2      .setPlatform(SHARE_MEDIA.DOUBAN)
    3      .setCallback(umShareListener)
    4       .withText("Hello 豆瓣")
    5       .withMedia(image)
    6        .share();
    7 选取分享的平台,设定分享回调接口和内容,并执行share方法。

    回调接口如下:

     1  new UMShareListener() {
     2         @Override
     3         public void onResult(SHARE_MEDIA platform) {
     4             Toast.makeText(ShareActivity.this,platform + " 分享成功啦", Toast.LENGTH_SHORT).show();
     5         }
     6 
     7         @Override
     8         public void onError(SHARE_MEDIA platform, Throwable t) {
     9             Toast.makeText(ShareActivity.this,platform + " 分享失败啦", Toast.LENGTH_SHORT).show();
    10         }
    11 
    12         @Override
    13         public void onCancel(SHARE_MEDIA platform) {
    14             Toast.makeText(ShareActivity.this,platform + " 分享取消了", Toast.LENGTH_SHORT).show();
    15         }
    16     };

    值得注意的是,分享也应该重写onActivityResult()

    1 @Override
    2     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    3         super.onActivityResult(requestCode, resultCode, data);
    4         UMShareAPI.get( this ).onActivityResult( requestCode, resultCode, data);
    5     }

    获取用户信息和好友列表
    已授权的平台,可以获取用户信息(新浪微博可以获取用户好友列表)
    实现的方法与授权和解除授权类似:

    1 mShareAPI = UMShareAPI.get(this);
    2 
    3 初始化UMShareAPI,然后进行用户信息获取:
    4 
    5  mShareAPI.getPlatformInfo(UserinfoActivity.this, platform, umAuthListener);
    6 
    7 对于新浪微博好友列表的获取使用的接口是:
    8 
    9 mShareAPI.getFriend(UserinfoActivity.this, SHARE_MEDIA.SINA, umGetfriendListener);

    高级功能介绍:

    对于以上介绍的基本功能已经可以实现一般用户的需求,对于特殊要求,我们进行了特别处理:
    针对分享面板,我们进行了如下的处理:
       针对不同平台使用不同监听器,以及分享不同内容
    根据前面的介绍可以知道,使用ShareAction(this).setDisplayList( displaylist)可以进行分享面板的平台设置。同时使用setContentList(),可以进行不同分享内容的处理,使用setListenerList()进行不同回调的处理。
     1 new ShareAction(this)
     6 .setDisplayList( SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, )
     7 .setContentList(shareContent1,shareContent2)
     8 .setCallback(umShareListener)
     9 .withText( "umeng" )
    10 .withMedia( image )
    11 .setListenerList(listener1,listener2)
    12  .open();

    分享面板点击回调
    使用setShareboardclickCallback()可以进行分享面板不同按钮的点击
    回调,方便开发者进行特殊处理。

    1 new ShareAction(this)
    2 .setDisplayList( SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, )
    3 .withText( "umeng" )
    4 .withMedia( image )
    5 setShareboardclickCallback(shareBoardlistener)
    6  .open();

    分享面板增加自定义按钮
    如果需要对分享面板增加自定义的按钮,可以通过`ShareAction(this).addButton(String showword,String Keyword,String icon,String Grayicon)`
    进行设置其中第一个参数是显示的名字,第二个参数是平台名称,第三个参数是按钮图标的图片名字,第四个按钮是置灰情况下按钮图标的图片名字。
    对于自定义平台的监听需要使用上面提到的分享面板点击回调,如下

     1 private ShareBoardlistener shareBoardlistener = new  ShareBoardlistener() {
     2           
     3         @Override
     4         public void onclick(SnsPlatform snsPlatform,SHARE_MEDIA share_media) {
     5             if (share_media==null){
     6                 if (snsPlatform.mKeyword.equals("11")){
     7                     Toast.makeText(ShareActivity.this,"add button success",Toast.LENGTH_LONG).show();
     8                 }
     9                 
    10             }
    11             else {
    12                 new ShareAction(ShareActivity.this).setPlatform(share_media).setCallback(umShareListener)
    13                         .withText("多平台分享")
    14                         .share();
    15             }
    16         }
    17     };
    18  是新增按钮的回调监听是通过判断当获取平台为空时,keyword的值来进行确定的,并在对应的条件中进行处理即可。

    获取客户端安装信息

     1 获取客户端安装信息
     2 //使用如下接口
     3 
     4 mShareAPI.isInstall(this, SHARE_MEDIA.WEIXIN)
     5 
     6 //关闭log和toast方法:
     7 Log.LOG = false 8 
     9 Config.IsToastTip = false10 //开启回流统计的方法:
    11 
    12 Config.isloadUrl = true

    混淆
    为了保证引用友盟Social SDK jar文件以及腾讯jar文件被混淆,请在proguard.cfg文件中添加以下代码避免被混淆.

     1 -dontshrink
     2  -dontoptimize
     3  -dontwarn com.google.android.maps.**
     4  -dontwarn android.webkit.WebView
     5  -dontwarn com.umeng.**
     6  -dontwarn com.tencent.weibo.sdk.**
     7  -dontwarn com.facebook.**
     8  -keep public class javax.**
     9  -keep public class android.webkit.**
    10  -dontwarn android.support.v4.**
    11  -keep enum com.facebook.**
    12  -keepattributes Exceptions,InnerClasses,Signature
    13  -keepattributes *Annotation*
    14  -keepattributes SourceFile,LineNumberTable
    15  
    16  -keep public interface com.facebook.**
    17  -keep public interface com.tencent.**
    18  -keep public interface com.umeng.socialize.**
    19  -keep public interface com.umeng.socialize.sensor.**
    20  -keep public interface com.umeng.scrshot.**
    21  
    22  -keep public class com.umeng.socialize.* {*;}
    23  
    24  
    25  -keep class com.facebook.**
    26  -keep class com.facebook.** { *; }
    27  -keep class com.umeng.scrshot.**
    28  -keep public class com.tencent.** {*;}
    29  -keep class com.umeng.socialize.sensor.**
    30  -keep class com.umeng.socialize.handler.**
    31  -keep class com.umeng.socialize.handler.*
    32  -keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;}
    33  -keep class com.tencent.mm.sdk.modelmsg.** implements com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;}
    34  
    35  -keep class im.yixin.sdk.api.YXMessage {*;}
    36  -keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}
    37  
    38  -dontwarn twitter4j.**
    39  -keep class twitter4j.** { *; }
    40  
    41  -keep class com.tencent.** {*;}
    42  -dontwarn com.tencent.**
    43  -keep public class com.umeng.soexample.R$*{
    44      public static final int *;
    45  }
    46  -keep public class com.umeng.soexample.R$*{
    47      public static final int *;
    48  }
    49  -keep class com.tencent.open.TDialog$*
    50  -keep class com.tencent.open.TDialog$* {*;}
    51  -keep class com.tencent.open.PKDialog
    52  -keep class com.tencent.open.PKDialog {*;}
    53  -keep class com.tencent.open.PKDialog$*
    54  -keep class com.tencent.open.PKDialog$* {*;}
    55  
    56  -keep class com.sina.** {*;}
    57  -dontwarn com.sina.**
    58  -keep class  com.alipay.share.sdk.** {
    59     *;
    60  }
    61  -keepnames class * implements android.os.Parcelable {
    62      public static final ** CREATOR;
    63  }
    64  
    65  -keep class com.linkedin.** { *; }
    66  -keepattributes Signature

    具体实现:

    登录:

     1  private UMShareAPI umShareAPI;
     2     //监听事件
     3     private UMAuthListener umAuthListener = new UMAuthListener() {
     4     //登录成功
     5         @Override
     6         public void onComplete(SHARE_MEDIA platform, int action,Map<String, String> data) {
     7             Toast.makeText(MainActivity.this, "Authorize succeed", Toast.LENGTH_SHORT).show();
     8             //获取用户信息
     9             umShareAPI.getPlatformInfo(MainActivity.this, platform,new UMAuthListener() {
    10                         @Override
    11                         public void onError(SHARE_MEDIA arg0, int arg1,Throwable arg2) {
    12 
    13                         }
    14                         //成功
    15                         @Override
    16                         public void onComplete(SHARE_MEDIA arg0, int arg1,Map<String, String> data) {
    17                             Set<String> set = data.keySet();
    18                             for (String string : set) {
    19                                 Log.i("msg",
    20                                         "============================Map=========================");
    21                                 Log.i("msg", string + "::::" + data.get(string));
    22                                 String str = data.get(string);
    23                                 // 设置头像
    24                                 if(str!=null){
    25                                     signMode.setVisibility(View.GONE);
    26                                     header.setVisibility(View.VISIBLE);
    27                                     if (string.equals("profile_image_url")) {
    28                                         DisplayImageOptions options = null;
    29                                         ImageLoader.getInstance().displayImage(str,mineHeader, options);
    30                                         ImageLoader.getInstance().displayImage(str,mine, options);
    31                                     }
    32                                     // 设置昵称
    33                                     if (string.equals("screen_name")) {
    34                                         mineName.setText(str);
    35                                     }
    36                                 }
    37 
    38 
    39                             }
    40 
    41                         }
    42     
    43                         @Override
    44                         public void onCancel(SHARE_MEDIA arg0, int arg1) {
    45 
    46                         }
    47                     });
    48         }
    49 
    50         @Override
    51         public void onError(SHARE_MEDIA platform, int action, Throwable t) {
    52             Toast.makeText(MainActivity.this, "Authorize fail", Toast.LENGTH_SHORT).show();
    53         }
    54 
    55         @Override
    56         public void onCancel(SHARE_MEDIA platform, int action) {
    57             Toast.makeText(MainActivity.this, "Authorize cancel", Toast.LENGTH_SHORT).show();
    58         }
    59     };
    60  @Override
    61     protected void onCreate(Bundle savedInstanceState) {
    62         super.onCreate(savedInstanceState);
    63         setContentView(R.layout.activity_main);
    64     PlatformConfig.setQQZone("100424468","c7394704798a158208a74ab60104f0ba");
    65 umShareAPI = UMShareAPI.get(this);
    66 }
    67 重写onActivityResult()
    68         public void onActivityResult(int requestCode, int resultCode, Intent data) {
    69             super.onActivityResult(requestCode, resultCode, data);
    70             umShareAPI.onActivityResult(requestCode, resultCode, data);
    71             Log.e("data", resultCode + "");
    72 
    73         }
    74  public void onClick(View v) {
    75         switch (v.getId()) {
    76 case R.id.qq_sign_button:
    77                 SHARE_MEDIA platform = SHARE_MEDIA.QQ;//此处是QQ授权
    78                 umShareAPI.doOauthVerify(this, platform, umAuthListener);
    79                 break;
    80             }
    81 }                                

    清单文件配置:

     1 <uses-permission android:name="android.permission.INTERNET" />
     2     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     3     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     4     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     5     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     6     <uses-permission android:name="android.permission.INTERNET" />
     7     <uses-permission android:name="android.permission.READ_LOGS" />
     8     <uses-permission android:name="android.permission.CALL_PHONE" />
     9     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    10     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    11     <uses-permission android:name="android.permission.GET_TASKS" />
    12     <uses-permission android:name="android.permission.SET_DEBUG_APP" />
    13     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    14     <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    15     <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    16     <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    17     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    18 <activity
    19             android:name="com.tencent.tauth.AuthActivity"
    20             android:launchMode="singleTask"
    21             android:noHistory="true">
    22             <intent-filter>
    23                 <action android:name="android.intent.action.VIEW" />
    24 
    25                 <category android:name="android.intent.category.DEFAULT" />
    26                 <category android:name="android.intent.category.BROWSABLE" />
    27 
    28                 <data android:scheme="tencent100424468" />
    29             </intent-filter>
    30         </activity>
    31         <activity
    32             android:name="com.tencent.connect.common.AssistActivity"
    33             android:screenOrientation="portrait"
    34             android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    35 
    36         <meta-data
    37             android:name="UMENG_APPKEY"
    38             android:value="4eaee02c527015373b000003" />

    分享:

    还是以QQ为例,清单文件配置同上:

     1 平台信息
     2 final SHARE_MEDIA[] displaylist = new SHARE_MEDIA[]
     3             {
     4                     SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.SINA,
     5                     SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.DOUBAN
     6             };
     7 button.setOnClickListener(new View.OnClickListener() {
     8             @Override
     9             public void onClick(View v) {
    10              11 
    12                 //多平台分享,这次实现的是shareBoardlistener监听
    13                 new ShareAction(MainActivity.this).setDisplayList(displaylist)
    14                         .withText("呵呵")//可以没有
    15                         .setShareboardclickCallback(shareBoardlistener)
    16                         .open();
    17             }
    18         });
    19 private ShareBoardlistener shareBoardlistener = new ShareBoardlistener() {
    20         @Override
    21         public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
    22             Log.e("snsPlatform", snsPlatform + "" + "SHARE_MEDIA" + share_media + "");
    23 //调用单平台分享
    24             new ShareAction(MainActivity.this)
    25                     //参数改成share_media
    26                     .setPlatform(share_media)
    27                     .setCallback(new UMShareListener() {
    28                         @Override
    29                         public void onResult(SHARE_MEDIA platform) {
    30                             Toast.makeText(MainActivity.this, platform + " 分享成功啦", Toast.LENGTH_SHORT).show();
    31                         }
    32 
    33                         @Override
    34                         public void onError(SHARE_MEDIA platform, Throwable t) {
    35                             Toast.makeText(MainActivity.this, platform + " 分享失败啦", Toast.LENGTH_SHORT).show();
    36                         }
    37 
    38                         @Override
    39                         public void onCancel(SHARE_MEDIA platform) {
    40                             Toast.makeText(MainActivity.this, platform + " 分享取消了", Toast.LENGTH_SHORT).show();
    41                         }
    42                     })
    43                     .withText("Hello 豆瓣")
    44                     .share();
    45         }
    46     };            
  • 相关阅读:
    Java框架-mybatis02基本的crud操作
    Java框架-mybatis01查询单个数据
    MAC常用命令
    性能测试工具Jmeter13-Jmeter跨线程组调用token
    性能测试工具Jmeter12-Jmeter连接配置带跳板机(SSH)的mysql服务器
    Java基础29-子父类中的成员变量
    Java基础28-继承
    Java基础27-单例设计模式
    启动项目时报spawn cmd ENOENT
    npm安装教程
  • 原文地址:https://www.cnblogs.com/yimi-yangguang/p/5715895.html
Copyright © 2020-2023  润新知