上次给大家分享了unity接入微信登录的步骤详见https://blog.csdn.net/qq_37857934/article/details/79316289,之前有网友反馈微信登录旋转屏幕后就闪退的问题,这是AndroidManifest文件中默认为了竖屏的缘故,大家可根据需要,自行加入屏幕方向的相关代码,就可以解决旋转方向时闪退的问题。
下面这个是自动旋转的代码
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection"
OK,进入正题---------------------------------------
本次咱们说一说微信分享吧,首先Mainactivity继承UnityPlayerActivity 并将APPID注册到微信中这点是不变的,然后咱们unity肯定要调用java里面的微信分享方法了,怎么调用大家应该清楚了吧,主要给大家讲一下微信分享的方法吧。
下面贴出一段代码
//微信分享
public void share(boolean friendsCircle)
{
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = "https://www.xxx.com;//微信分享后可点击进入的链接,分享url
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = "分享内容的标题";
msg.description = "分享内容的描述";
msg.thumbData = getThumbData();//封面图片byte数组
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = String.valueOf(System.currentTimeMillis());
req.message = msg;
if (friendsCircle)
{
req.scene = (friendsCircle ? 1 : 0);
this.api.sendReq(req);
}
if (!friendsCircle)
{
req.scene = (friendsCircle ? 0 : 0);
this.api.sendReq(req);
}
}
//获取分享封面byte数组 我们这边取的是软件启动icon
private byte[] getThumbData()
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), 2130903040, options);
ByteArrayOutputStream output = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output);
int quality = 100;
while ((output.toByteArray().length > 32768) && (quality != 10))
{
output.reset();
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, output);
quality -= 10;
}
bitmap.recycle();
byte[] result = output.toByteArray();
try
{
output.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return result;
}
//那么分享朋友圈和分享给好友就可以这样调用了
public void share_friend_circle()
{
share(true);//为true表示分享给朋友圈
}
public void share_friend()
{
share(false);//为true表示分享给朋友或者微信群
}
微信分享的回调仍然写在WXEntryActivity中,与微信登录的回调相似,resp.getType()==1表示微信登录结果的回调,resp.getType()==2,表示微信分享结果的回调,大家可以根据自己的需求使用到项目当中去。
public void onReq(BaseReq arg0) {}
public void onResp(BaseResp resp)
{
if (resp.getType() == 1)
{
String result;
switch (resp.errCode)
{
case 0:
Bundle bundle = new Bundle();
resp.toBundle(bundle);
SendAuth.Resp sp = new SendAuth.Resp(bundle);
String token = sp.code;
requestOpenId(token);
result = "授权成功!";
break;
case -2:
result = "发送取消";
break;
case -4:
result = "发送拒绝";
break;
case -3:
case -1:
default:
result = "发送返回";
}
Toast.makeText(this, result, 1).show();
finish();
}
if (resp.getType() == 2)
{
String result;
switch (resp.errCode)
{
case 0:
result = "分享成功";
UnityPlayer.UnitySendMessage("脚本所挂载的gameobject名", "脚本中的方法名", "");//分享成功后回调给unity
break;
case -2:
result = "取消分享";
break;
case -3:
result = "分享失败";
break;
case -1:
default:
result = "未知原因";
}
Toast.makeText(this, result, 1).show();
finish();
}
}
有不太清楚的可以在下方评论留言,可以在此基础上修改http://download.csdn.net/download/qq_37857934/10250295,欢迎广大开发者批评指正