大家好,欢迎来到IT知识分享网。
前言:如果已经集成好SDK,可以直接从7开始
1、友盟jar下载地址 http://mobile.umeng.com/custom_sdk
2、解压后打开share,再双击 友盟集成工具.jar 如下图
3、点击OK后会生成一个文件夹 如下图
4、双击该文件夹 ,点开libs 将里面jar包全部复制到自己项目中libs下 如下图
6、以为例:腾讯开放平台注册,添加应用得到APP ID APP KEY
7、清单文件 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.helloworld.com.umengdemo"> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> <application android:name=".MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- 友盟分享 --> <!-- 微信 --> <activity android:name="wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- 新浪微博 --> <activity android:name="wxapi.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> <!-- 精简版 --> <activity android:name="com.umeng..tencent.AuthActivity" android:launchMode="singleTask" android:noHistory="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- 这里的scheme是分享要用的,如:tencent <data android:scheme="tencentappid" /> </intent-filter> </activity> <activity android:name="com.umeng..tencent.AssistActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- 分享编辑页 --> <activity android:name="com.umeng.socialize.editorpage.ShareActivity" android:excludeFromRecents="true" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <meta-data android:name="UMENG_APPKEY" android:value="步骤5中的友盟AppKey"/> </application> </manifest>
package wxapi; import com.umeng.socialize.media.WBShareCallBackActivity; / * 微博分享回调 */ public class WBShareActivity extends WBShareCallBackActivity {
}
package wxapi; import com.umeng.weixin.callback.WXCallbackActivity; / * 微信分享回调 */ public class WXEntryActivity extends WXCallbackActivity {
}
9、MyApplication 用于初始化友盟SDK
package com.helloworld.com.umengdemo; import android.app.Application; import com.umeng.socialize.Config; import com.umeng.socialize.PlatformConfig; import com.umeng.socialize.UMShareAPI; public class MyApplication extends Application {
@Override public void onCreate() { super.onCreate(); //初始化友盟SDK UMShareAPI.get(this);//初始化sd //开启debug模式,方便定位错误,具体错误检查方式可以查看 //http://dev.umeng.com/social/android/quick-integration的报错必看,正式发布,请关闭该模式 Config.DEBUG = true; //微信 PlatformConfig.setWeixin("wxdc1e388c1111c80b", "3baf1193c85774b3fd9d11117d76cab0"); //新浪微博(第三个参数为回调地址) PlatformConfig.setSinaWeibo("", "04b48b094faeb16683cebdad", "http://sns.whalecloud.com/sina2/callback"); //应用宝开放平台 APP ID APP KEY PlatformConfig.setZone("", "aEIMjd6vWSADA5ol"); } }
10、MainActivity
package com.helloworld.com.umengdemo; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Toast; import com.umeng.socialize.ShareAction; import com.umeng.socialize.UMAuthListener; import com.umeng.socialize.UMShareAPI; import com.umeng.socialize.UMShareListener; import com.umeng.socialize.bean.SHARE_MEDIA; import com.umeng.socialize.media.UMImage; import com.umeng.socialize.media.UMWeb; import java.util.Map; public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button1).setOnClickListener(this); findViewById(R.id.button2).setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.button1: //之所以要删除授权,是因为每次都拉取对应授权页 //否则是直接授权并不能切换其他账号登入 umengDeleteOauth(SHARE_MEDIA.); //开始授权 shareLoginUmeng(this, SHARE_MEDIA.); //shareLoginUmeng(this, SHARE_MEDIA.WEIXIN); //shareLoginUmeng(this, SHARE_MEDIA.SINA); break; case R.id.button2: //以为例 shareWeb(this, "http://www.baidu.com", "Hello Word", "Word", SHARE_MEDIA.); //shareWeb(this, "", "Hello Word", "Word", SHARE_MEDIA.SINA); //shareWeb(this, "", "Hello Word", "Word", SHARE_MEDIA.WEIXIN); break; } } / * 友盟开始授权(登入) */ public static void shareLoginUmeng(final Activity activity, SHARE_MEDIA share_media_type) { UMShareAPI.get(activity).getPlatformInfo(activity, share_media_type, new UMAuthListener() { @Override public void onStart(SHARE_MEDIA share_media) { Log.e(TAG, "onStart授权开始: "); } @Override public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) { //sdk是6.4.5的,但是获取值的时候用的是6.2以前的(access_token)才能获取到值,未知原因 String uid = map.get("uid"); String openid = map.get("openid");//微博没有 String unionid = map.get("unionid");//微博没有 String access_token = map.get("access_token"); String refresh_token = map.get("refresh_token");//微信,,微博都没有获取到 String expires_in = map.get("expires_in"); String name = map.get("name");//名称 String gender = map.get("gender");//性别 String iconurl = map.get("iconurl");//头像地址 Log.e(TAG, "onStart授权完成: " + openid); Log.e(TAG, "onStart授权完成: " + unionid); Log.e(TAG, "onStart授权完成: " + access_token); Log.e(TAG, "onStart授权完成: " + refresh_token); Log.e(TAG, "onStart授权完成: " + expires_in); Log.e(TAG, "onStart授权完成: " + uid); Log.e(TAG, "onStart授权完成: " + name); Log.e(TAG, "onStart授权完成: " + gender); Log.e(TAG, "onStart授权完成: " + iconurl); } @Override public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) { Toast.makeText(activity, "授权失败", Toast.LENGTH_LONG).show(); Log.e(TAG, "onError: " + "授权失败"); } @Override public void onCancel(SHARE_MEDIA share_media, int i) { Toast.makeText(activity, "授权取消", Toast.LENGTH_LONG).show(); Log.e(TAG, "onError: " + "授权取消"); } }); } / * 友盟取消授权(登入) */ private void umengDeleteOauth(SHARE_MEDIA share_media_type) { UMShareAPI.get(this).deleteOauth(this, share_media_type, new UMAuthListener() { @Override public void onStart(SHARE_MEDIA share_media) { //开始授权 Log.e(TAG, "onStart: "); } @Override public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) { //取消授权成功 i=1 Log.e(TAG, "onComplete: "); } @Override public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) { //授权出错 Log.e(TAG, "onError: "); } @Override public void onCancel(SHARE_MEDIA share_media, int i) { //取消授权 Log.e(TAG, "onCancel: "); } }); } / * 友盟分享 * 上下文activity、分享的链接、标题、内容、类型 * 若是要分享视频、音乐可看官方文档 */ public static void shareWeb(final Activity activity, String WebUrl, String title, String description, SHARE_MEDIA platform) { UMImage thumb = new UMImage(activity, R.mipmap.ic_launcher); UMWeb web = new UMWeb(WebUrl);//连接地址(注意链接开头必须包含http) web.setTitle(title);//标题 web.setDescription(description);//描述 web.setThumb(thumb);//缩略图 new ShareAction(activity) //分享的平台 .setPlatform(platform) .withMedia(web) .setCallback(new UMShareListener() { / * @descrption 分享开始的回调 * @param share_media 平台类型 */ @Override public void onStart(SHARE_MEDIA share_media) { Log.e(TAG, "onStart开始分享的平台: " + share_media); } / * @descrption 分享成功的回调 * @param share_media 平台类型 */ @Override public void onResult(final SHARE_MEDIA share_media) { activity.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(activity, " 分享成功 ", Toast.LENGTH_SHORT).show(); Log.e(TAG, "onStart分享成功的平台: " + share_media); } }); } / * @descrption 分享失败的回调 * @param share_media 平台类型 * @param throwable 错误原因 */ @Override public void onError(final SHARE_MEDIA share_media, final Throwable throwable) { if (throwable != null) { //失败原因 Log.e(TAG, "throw:" + throwable.getMessage()); } activity.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(activity, share_media + " 分享失败", Toast.LENGTH_SHORT).show(); } }); } / * @descrption 分享取消的回调 * @param share_media 平台类型 */ @Override public void onCancel(final SHARE_MEDIA share_media) { activity.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(activity, " 分享取消 ", Toast.LENGTH_SHORT).show(); } }); } }) .share(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); Log.e(TAG, "onActivityResult: " + requestCode + "\n" + resultCode + "\n" + data); } }
对应的activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.helloworld.com.umengdemo.MainActivity"> <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="、微信、微博登入" /> <Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="、微信、微博分享" /> </LinearLayout>
11、回调后的打印以及遇到的问题
刚开始的时候报错如下图
type表明你缺少的文件类型,可能是string,drawable,layout等资源类型,你只需要在你下载的包中对应的string文件或布局文件的文件夹中去找即可。
这里是缺少string资源, 在项目values-strings目录下添加下面2句即可
<string name="umeng_socialize_female">女</string> <string name="umeng_socialize_male">男</string>
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/151060.html