安卓学习笔记---友盟分享的坑
来源:互联网 发布:java 文件上传过程 编辑:程序博客网 时间:2024/05/21 18:42
这几天需要做分享,一开始使用的是ShsreSDK分享,基本也已加入项目中,但是老板说使用友盟分享,那就改呗,从此在坑的道路上越走越远
1.首先是进入友盟官网去申请账号:http://mobile.umeng.com/social
2.当然是要去第三方的网站去申请了,微信,QQ,新浪
然后我再微信的应用签名那里就遇到了坑,需要上传一个应用签名和包名,签名我以为是SHA1,其实是MD5啊!!!怪不得老板告诉我已经申请好了,但是我这里还是不能调起微信分享,是自己理解错了!!!
我使用的是AndroidStudio,如果要生成签名,可以看一下这篇文章:
安卓学习笔记---Android Studio生成签名文件,自动签名,以及获取SHA1和MD5值
http://blog.csdn.net/juhua2012/article/details/74943519
还有就是当你重新修改了签名在微信平台上之后,是可以立即生效的,但是你或许应该先把微信卸载,在重新安装一下,因为可能会有缓存,导致新的签名不能生效,可以看一下这篇文章
微信支付应用签名写错修改会立即生效和后面的坑
http://jingyan.baidu.com/article/03b2f78c0f8fec5ea237aeb6.html
3.下面就是去官网下载sdk以及需要的一些文件了
http://dev.umeng.com/social/android/quick-integration#3_2 这个是步骤,可以一步一步跟着做
现在的友盟进行了更新,和原来的不太一样了
下载sdk之后,解压出现的目录如下
记得要把标注的文件夹里面的所有内容都复制到项目中去,按照官网说的,但是运行之后,发现少了一些jar包或者文件,全部复制进去之后就好,在这部分也遇到了坑,全部复制进去之后,项目的目录基本如下:
4. AndroidManifest.xml里面的内容基本是这样
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /><application android:name=".BaseApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" 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> <!--分享相关--> <meta-data android:name="UMENG_APPKEY" android:value="在友盟官网创建应用获得的appkey" > </meta-data> <!--新浪--> <activity android:name=".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.sina.weibo.sdk.component.WeiboSdkBrowser" android:configChanges="keyboardHidden|orientation" android:windowSoftInputMode="adjustResize" android:exported="false" > </activity> <service android:name="com.sina.weibo.sdk.net.DownloadService" android:exported="false"></service> <!--微信--> <activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!--QQ--> <activity android:name="com.tencent.tauth.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" /> <data android:scheme="tencent100424468" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden|screenSize"/></application>
5.里面有一句
android:name=".BaseApplication",创建这个BaseApplication,基本内容如下
public class BaseApplication extends Application { static { PlatformConfig.setWeixin("wx555cfv6666fgtgfvdfc1577cd", "axasxasxhjasx6u67i78q223237i89a9f51638"); PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba"); PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad", "http://sns.whalecloud.com"); } @Override public void onCreate() { super.onCreate(); UMShareAPI.get(this); }}
根据从不同的平台得到的,进行替换即可
6.下面附上自己写的
/** * 友盟分享接入 * http://dev.umeng.com/social/android/share-detail */public class MainActivity extends AppCompatActivity { private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context=MainActivity.this; //Config.DEBUG = true; findViewById(R.id.btn_share).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // UmengTool.checkWx(MainActivity.this); //设置分享图片 UMImage image = new UMImage(MainActivity.this, "imageurl");//网络图片 //推荐使用网络图片和资源文件的方式,平台兼容性更高。 对于微信QQ的那个平台,分享的图片需要设置缩略图,缩略图的设置规则为: UMImage thumb = new UMImage(MainActivity.this, R.drawable.thumb); image.setThumb(thumb); //用户设置的图片大小最好不要超过250k,缩略图不要超过18k,如果超过太多(最好不要分享1M以上的图片,压缩效率会很低),图片会被压缩。 用户可以设置压缩的方式: // 压缩格式设置: image.compressStyle = UMImage.CompressStyle.SCALE;//大小压缩,默认为大小压缩,适合普通很大的图 // image.compressStyle = UMImage.CompressStyle.QUALITY;//质量压缩,适合长图的分享 // image.compressFormat = Bitmap.CompressFormat.PNG;//用户分享透明背景的图片可以设置这种方式,但是qq好友,微信朋友圈,不支持透明背景图片,会变成黑色 //设置分享链接 //分享链接可以使用UMWeb进行分享: //注意在新浪平台,缩略图属于必传参数,否则会报错 UMWeb web = new UMWeb("http://www.baidu.com"); web.setTitle("连接标题");//标题 web.setThumb(thumb); //缩略图 web.setDescription("描述");//描述 new ShareAction(MainActivity.this).withText("分享内容")//分享内容 .withMedia(image)//分享图片 .withMedia(web) //分享链接 .setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.QZONE,SHARE_MEDIA.WEIXIN,SHARE_MEDIA.WEIXIN_CIRCLE) .setCallback(umShareListener).open(); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); } private UMShareListener umShareListener = new UMShareListener() { @Override public void onStart(SHARE_MEDIA platform) { //分享开始的回调 } @Override public void onResult(SHARE_MEDIA platform) { Log.d("plat","platform"+platform); if(SHARE_MEDIA.SINA.equals(platform)) { Toast.makeText(context, " 新浪微博分享成功啦", Toast.LENGTH_SHORT).show(); }else if(SHARE_MEDIA.QQ.equals(platform)) { Toast.makeText(context," QQ分享成功啦", Toast.LENGTH_SHORT).show(); }else if(SHARE_MEDIA.QZONE.equals(platform)) { Toast.makeText(context," QQ空间分享成功啦", Toast.LENGTH_SHORT).show(); }else if(SHARE_MEDIA.WEIXIN.equals(platform)) { Toast.makeText(context," 微信分享成功啦", Toast.LENGTH_SHORT).show(); }else if(SHARE_MEDIA.WEIXIN_CIRCLE.equals(platform)) { Toast.makeText(context," 朋友圈分享成功啦", Toast.LENGTH_SHORT).show(); } } @Override public void onError(SHARE_MEDIA platform, Throwable t) { if(SHARE_MEDIA.SINA.equals(platform)) { Toast.makeText(context," 新浪微博分享失败啦", Toast.LENGTH_SHORT).show(); }else if(SHARE_MEDIA.QQ.equals(platform)) { Toast.makeText(context," QQ分享失败啦", Toast.LENGTH_SHORT).show(); }else if(SHARE_MEDIA.QZONE.equals(platform)) { Toast.makeText(context," QQ空间分享失败啦", Toast.LENGTH_SHORT).show(); }else if(SHARE_MEDIA.WEIXIN.equals(platform)) { Toast.makeText(context," 微信分享失败啦", Toast.LENGTH_SHORT).show(); }else if(SHARE_MEDIA.WEIXIN_CIRCLE.equals(platform)) { Toast.makeText(context," 朋友圈分享失败啦", Toast.LENGTH_SHORT).show(); } if(t!=null){ Log.d("throw","throw:"+t.getMessage()); } } @Override public void onCancel(SHARE_MEDIA platform) { if(SHARE_MEDIA.SINA.equals(platform)) { Toast.makeText(context," 新浪微博分享取消了", Toast.LENGTH_SHORT).show(); }else if(SHARE_MEDIA.QQ.equals(platform)) { Toast.makeText(context," QQ分享取消了", Toast.LENGTH_SHORT).show(); }else if(SHARE_MEDIA.QZONE.equals(platform)) { Toast.makeText(context," QQ空间分享取消了", Toast.LENGTH_SHORT).show(); }else if(SHARE_MEDIA.WEIXIN.equals(platform)) { Toast.makeText(context," 微信分享取消了", Toast.LENGTH_SHORT).show(); }else if(SHARE_MEDIA.WEIXIN_CIRCLE.equals(platform)) { Toast.makeText(context," 朋友圈分享取消了", Toast.LENGTH_SHORT).show(); } } }; @Override protected void onDestroy() { super.onDestroy(); UMShareAPI.get(this).release();//防止内存泄漏 }}
注意: Config.DEBUG = true;这个是可以在DEBUG下可以看到一些分享的输出,便于查看
UmengTool.checkWx(MainActivity.this);这一句是我的微信一直调不出来,加上的,可以查看你的签名和包名是否正确
我也是这样查看之后才知道自己的签名出现了问题的
在这里记录下来,以后少走弯路吧,毕竟时间真的耗不起啊!!!
最后运行之后显示的效果
- 安卓学习笔记---友盟分享的坑
- 安卓学习课程分享
- 分享:『 安卓逆向的学习路线..』
- 安卓学习笔记0安卓环境的搭建
- 安卓学习笔记
- 安卓学习笔记
- 安卓学习笔记
- 安卓学习笔记
- 安卓学习笔记
- 安卓学习笔记
- 安卓学习笔记
- 安卓学习笔记一
- 安卓学习笔记二
- 安卓学习笔记一
- 安卓学习笔记二
- 安卓学习笔记三
- 安卓开发学习笔记
- 安卓测试学习笔记
- P1005矩阵取数
- 阿里云Linux CentOS 7.2下自建MySQL的root密码忘记解决方法
- python之OS模块详解
- Hive数据倾斜
- JSP学习笔记(1)
- 安卓学习笔记---友盟分享的坑
- Java培训第01天 Java前期准备---2017年07月10日
- 安装 JDK + Tomcat + MySQL for CentOS
- AOF方式固化
- vs2015调试时无法看变量的值revit二次开发时
- iOS 对源代码进行混淆
- Android新建没有出现appcompat_v7
- JVM监控命令
- Linux下tomcat常用操作命令