Unity3D,QQ分享功能

参考雨松博客http://www.xuanyusong.com/archives/2159和腾讯SDK完成。

1、首先第一步配置好腾讯的SDK,腾讯开发官网有教程。

Elipse下Android安卓Activity代码

package com.example.androidqqsharetest;

import com.tencent.connect.common.Constants;
import com.tencent.connect.share.QQShare;
import com.tencent.connect.share.QzoneShare;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
import com.unity3d.player.UnityPlayerActivity;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;

import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;

import android.widget.Button;

public class MainActivity extends UnityPlayerActivity{

private int shareType = QQShare.SHARE_TO_QQ_TYPE_DEFAULT; // 分享的消息类型
private Tencent mTencent;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTencent = Tencent.createInstance("你申请的APPID", this.getApplicationContext());
}

IUiListener qqShareListener = new IUiListener() {
@Override
public void onCancel() {
if (shareType != QQShare.SHARE_TO_QQ_TYPE_IMAGE) {
}
}
@Override
public void onComplete(Object response) {
}
@Override
public void onError(UiError e) {
}
};

// 特别注意应用在调用Android_SDK 接口时,如果成功接收到回调,需要在调用接口的 Activity 的onActivityResult 方法中增加如下代码
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
imTencent.onActivityResult(requestCode, resultCode, data);
}

//这个方法是在Unity中调用的。参数是当前的Activity。
public void LoginAndSend(final Activity currentActivity)
{
//一定要在UI线程中来执行腾讯API中的方法。
//API中的方法应该是开启了一个线程,一切由Unity调用的方法里面只要开启线程就会出现
//Can’t create handler inside thread that has not called Looper.prepare() 错误
//写在runOnUiThread 的线程中可以避免这个错误没,以前在处理Unity发送新浪微博的时候也遇到这样的错误。
//同样可以按照这种方法来解决。

currentActivity.runOnUiThread(new Runnable() {

@Override
public void run()
{
MyShareToQQ();
}
});
}

// 分享到QQ
public void MyShareToQQ() {

final Bundle bundle = new Bundle();
// 这条分享消息被好友点击后的跳转URL
bundle.putString(QQShare.SHARE_TO_QQ_TARGET_URL, "http://www.uzzf.com/news/7399.html");
// // 分享的标题
bundle.putString(QQShare.SHARE_TO_QQ_TITLE, "QQZone 分享 Testing");
// // 分享图片的URL
bundle.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, "http://171.109.34.16:8088/460.jpg");
// // 分享的消息摘要最多50
bundle.putString(QQShare.SHARE_TO_QQ_SUMMARY, "Monster的分享测试");
bundle.putString(QQShare.SHARE_TO_QQ_APP_NAME, "AndroidQQShareTest");
bundle.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
Log.v("IMAGEURL", imageUrl);
mTencent.shareToQQ(this, bundle, qqShareListener);

}

}

2、导出jar包到Unity3D中,参考http://i.cnblogs.com/EditPosts.aspx?opt=1,注意看完这篇参考博客,最底下有个错误解决方法。本人反正是遇到了。

Unity3D工程目录录如下:其中OneKeyShare是从Eclipse导出的jar包。open_sdk是腾讯的包。其中res文件夹,libs文件夹,AndroidManifest文件都是从Eclipse工程直接拉进来。

3、然后在U3D中,绑定在任意对象中, 把Activity传递给Android插件中。

using UnityEngine;
using System.Collections;

public class ShareToQQZone : MonoBehaviour
{

void OnGUI()
{

if (GUILayout.Button(" Send QQ zone", GUILayout.Height(200), GUILayout.Width(300)))
{

AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");

using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"))
{
jo.Call("LoginAndSend", jo);

}

}

}
}

4、接下来我发现Eclipse导出的jar包比较大,有2.98M。一个插件这么大觉得很占空间。所以研究有什么可以从中剔除,最后发现:

bin文件占用比较大的体积,试着删除其中占用空间较大的classes.dex文件,发现运行依然正常。

随后又删除不相关的图片文件。图片文件一般占用较大空间。

删除libs的android-support-v4.jar文件。mta-sdk-1.6.2.jar文件,依然可以运行。

这样导出来的jar包缩小为1.41M。

删除dexedLibs文件夹下的android-support-v4.jar,mta-sdk-1.6.2.jar文件。

再次删除bin文件夹下的APK文件,发现导出的jar包减小到899K极大地缩小了程序占用的空间!!插件依然可以正常使用!

最后是Android和Unity3D工程下载链接http://pan.baidu.com/s/1bnbFwbd

时间: 2024-10-13 05:23:24

Unity3D,QQ分享功能的相关文章

在Unity3D项目中接入ShareSDK实现安卓平台微信分享功能(可使用ShareSDK默认UI或自定义UI)

最近公司的大厅要重做,我协助主程一起制作新大厅和新框架,前面制作的编辑器也派上了用场.等全部功能做完后我会再写一个复盘,这两天主程在忙于写热更新的功能,所以把接入分享SDK功能的任务交给了我,ShareSDK官网的文档比较分散,而且关于Unity的文档比较简略,所以还是有不少的坑.写篇博客分享一下,并加强理解记忆. 第一步,先去ShareSDK的官网下载最新版本的ShareSDK(完全免费).地址:http://www.mob.com/ 我们选择ShareSDK For Unity3D,页面会直

Web 项目中分享到微博、QQ空间等分享功能

网上有很多的模板以及代码,但是有很多都不能分享内容,简单的测试了下: 以新浪微博为例,文本框中的内容是title属性,下面的链接是url属性,如果你的链接页面有图片,会自动抓取图片让你选择,因此,当你自己写分享功能时需要你传递title和url属性到接口链接即可. 代码如下: 1 <script> 2 function buttonShare(url){ 3 $("#theForm").attr("action",url); 4 $("#the

andriod 实现新浪、QQ空间、微信朋友圈、微信好友分享功能

前言:自己在学习的过程中的一些操作过程,对分享的一些理解.下面就讲解一下: 下载地址:http://download.csdn.net/detail/u014608640/7490357 首先,我们需要去ShareSdk官方网站http://sharesdk.cn/ 去下载ShareSDK ,然后我们会有4个文件: 根据我自己在学习的过程中只用到了第一个文件夹的 libs目录的2个项目,这2个是必须要的,是ShareSdk提供的,然后需要将这2个放入到自己做的项目当中去,在Res目录下有一个 S

andriod 实现新浪、QQ场地、朋友微信圈、微信朋友分享功能

前言:在自己的学习过程中的一些操作,分享一些理解. 下面将说明什么: 下载链接:http://download.csdn.net/detail/u014608640/7490357 首先.我们须要去ShareSdk官方站点http://sharesdk.cn/ 去下载ShareSDK ,然后我们会有4个文件: 依据我自己在学习的过程中仅仅用到了第一个目录的 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDYwODY0MA==/font/5a6

在Android中使App高速、简单地支持新浪微博、微信、QQ、facebook等十几个主流社交平台的分享功能

前言 在如今的APP或者游戏中,分享功能差点儿已经成为标配.分享功能不但能够满足用户的需求.也能够为产品带来很多其它的用户,甚至能够对用户的行为.活跃度.年龄段等情况进行数据统计,使得软件公司能够对产品进行更精准的定位.今天我们就来简单剖析市场上一款优秀的分享SDK以及其集成过程.这款分享SDK就是友盟的社会化分享组件. 友盟社会化分享,帮助移动应用高速具备分享.登录.评论.喜欢等社交功能,提升用户粘度.助力产品推广,并提供实时.全面的社会化数据统计分析服务. 很多其它请訪问友盟社会化组件官网.

Android分享功能,微博、QQ、QQ空间等社交平台分享之入门与进阶

前言 如何能迅速做一个分享功能,那主要就是根据第一个步骤来做就好了,因为友盟的sdk包已经集成很多的内容了,只要你有相应的app和平台账号就可以能马上分享.进阶的内容就是从第三部分开始,这些内容不难,目的就是为了更好的优化分享体验. 1.先做一个简单的分享效果. 1.1 创建一个Android项目 以下项目所需要的jar包,图片等资源可到该网站下载SDK即可. http://dev.umeng.com/social/android/quick-integration?spm=0.0.0.0.Lk

在Android中使App快速、简单地支持新浪微博、微信、QQ、facebook等十几个主流社交平台的分享功能

前言 在现在的APP或者游戏中,分享功能几乎已经成为标配.分享功能不但能够满足用户的需求,也能够为产品带来更多的用户,甚至可以对用户的行为.活跃度.年龄段等情况进行数据统计,使得软件公司可以对产品进行更精准的定位.今天我们就来简单剖析市场上一款优秀的分享SDK以及其集成过程,这款分享SDK就是友盟的社会化分享组件. 友盟社会化分享,帮助移动应用快速具备分享.登录.评论.喜欢等社交功能,提升用户粘度.助力产品推广,并提供实时.全面的社会化数据统计分析服务. 基本概念 根据友盟的集成文档,我们对于友

Android项目实战(十七):QQ空间实现(二)—— 分享功能 / 弹出PopupWindow

原文:Android项目实战(十七):QQ空间实现(二)-- 分享功能 / 弹出PopupWindow 这是一张QQ空间说说详情的截图. 分析: 1.点击右上角三个点的图标,在界面底部弹出一个区域,这个区域有一些按钮提供给我们操作 2.当该区域出现的时候,详情界面便灰了,也说成透明度变化了 3.当任意选了一个按钮或者点击了该区域以外的部分,该区域消失,灰色界面变回亮白色,并执行点击的按钮对应的操作 显然,这个功能我们需要用PopupWindow实现更好~ --------------------

android 实现分享功能两种方法

当我想做一个智能的记事本的时候,我就在尝试自己写一组分享功能.后来才知道,原来每个社交软件中都有自己的分享接口. 这就大大减少了我们的代码量了. 第一种方法:特点--简单 package com.example.share; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuI