1.注册你的APP
登录 微信开放平台 把你的开发者信息填上,这些就不上图了,都是中文字,应该看得懂
然后进入 管理中心 点击创建++移动应用++
创建移动应用
把你的应用信息填上,有些项目不知道怎么填随便填就行了,但是注意: 应用的包名和签名不能随便填!!
- 包名就是你的应用的包名例如: fucker.idiot.asshole.wanker
怎么获取签名?
先下载微信提供的一些工具
工具
首先将你的app安装在手机或者模拟器上,
由于平时我们调试软件都是使用debug的签名生成应用,所以我们要特别注意如果使用了debug的签名,等到APP正式发布的时候,微信的分享就不能用了.
所以我们要使用release的签名文件
怎么让我们debug的时候也使用release的签名文件呢?
打开应用Module的build.gradle文件 添加这样一份代码:
android {
signingConfigs{
debug{ //这里配置的就是debug的签名配置了
storeFile file("C:\\Users\\Administrator\\.android\\asd") //这个文件是我的,改成你自己的release签名文件
storePassword "asd123456" //密码改成自己的
keyAlias "asd" //再改成你自己的
keyPassword "asd123456" //再改成你自己的
}
}
}
再使用工具包中的软件便可以获取到应用的签名了,
填上应用的包名,然后"Get Signature"
获取签名
绿色的字就是签名
最后等待审核,可能要一两天把...
通过审核是这样的
通过审核
当然要把 AppID 和 AppSecret 记录下来,在代码中需要使用
第三方集成步骤大致都差不多:平台注册,引入依赖包,配置清单文件,初始化操作,最后引用
注册就不用说了,直接上第三方官网,按照提示申请注册账号和应用,获取相应的appid,appkey等;
2.引入依赖包:
项目build.gradle之下
compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
其中,里面的without表示没有统计功能,如果需要有统计功能修改为with即可,+号表示随时引入最新包;
3.配置清单AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
<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"/>
4.注册到微信(我是在Application的onCreate中注册的,也可以在Activity中注册)
IWXAPI mWxApi = WXAPIFactory.createWXAPI(this, ShareKey.WX_ID, true); mWxApi.registerApp(ShareKey.WX_ID);
第四步:分享内容到微信
IWXAPI mWXApi = WXAPIFactory.createWXAPI(context, ShareKey.WX_ID, true); mWXApi.registerApp(ShareKey.WX_ID); if (!mWXApi.isWXAppInstalled()) { Tool.toast(context, R.string.share_unInstall_wx); return; } WXWebpageObject webpage = new WXWebpageObject(); webpage.webpageUrl = url; WXMediaMessage msg = new WXMediaMessage(webpage); msg.title = title; msg.description = decribe; msg.thumbData = getWXThumb(bitmap).toByteArray(); SendMessageToWX.Req req = new SendMessageToWX.Req(); //WXSceneTimeline朋友圈 WXSceneSession聊天界面 req.scene = isTimeLineCb ? SendMessageToWX.Req.WXSceneTimeline : SendMessageToWX.Req.WXSceneSession;//聊天界面 req.message = msg; req.transaction = String.valueOf(System.currentTimeMillis()); mWXApi.sendReq(req);
这是图片需要处理一下,太大了分享会报错
public static final int IMAGE_LENGTH_LIMIT = 6291456; private static ByteArrayOutputStream getWXThumb(Bitmap resource) { Bitmap thumb = createScaledBitmap(resource, 100, true); ByteArrayOutputStream output = new ByteArrayOutputStream(); int quality = 90; int realLength = Util.getBitmapByteSize(resource.getWidth(), resource.getHeight(), Bitmap.Config.ARGB_8888); if (realLength > IMAGE_LENGTH_LIMIT) { quality = (int) (IMAGE_LENGTH_LIMIT * 1f / realLength * 100); } if (quality < 75) { quality = 75; } resource.compress(Bitmap.CompressFormat.PNG, quality, output); output.reset(); thumb.compress(Bitmap.CompressFormat.PNG, 85, output); return output; }
第四步:最后就是分享的回调了(在自己项目包名下创建目录wxapi,这个目录下创建WXEntryActivity,也就是:你的包名.wxapi.WXEntryActivity,这个类需要在清单注册)
<activity android:name=".wxapi.WXEntryActivity" android:exported="true" android:launchMode="singleTop" android:screenOrientation="portrait" />
WXEntryActivity的实现:
public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler { private final int REQUEST_PAY = 100; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); share = ShareKey.getShare(this); //如果没回调onResp,八成是这句没有写 WXAPIFactory.createWXAPI(this, WX_ID, false).handleIntent(getIntent(), this); } // 微信发送请求到第三方应用时,会回调到该方法 @Override public void onReq(BaseReq req) { } // 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法 //app发送消息给微信,处理返回消息的回调 @Override public void onResp(BaseResp resp) { switch (resp.errCode) { case BaseResp.ErrCode.ERR_AUTH_DENIED: case BaseResp.ErrCode.ERR_USER_CANCEL: switch (resp.getType()) { case RETURN_MSG_TYPE_SHARE: Tool.toast(this, "微信分享取消"); finish(); break; } break; case BaseResp.ErrCode.ERR_OK: switch (resp.getType()) { case RETURN_MSG_TYPE_SHARE: finish(); break; } break; } }
到此,微信分享就完事了。说一下需要注意的地方,
1 , app签名需要和微信平台上申请的一致
2 ,分享的图片大小要注意,缩略图不能大于32k
3 , 回调的WXEntryActivity要放对位置,清单也要添加