腾讯QQ及空间分享

注册成为开发者填写开发者基本信息

1. 请点击腾讯开放平台(http://open.qq.com)页面右上角的“登录”按钮,使用QQ帐号登录。如下图所示:

重要提示: 
开发者QQ号码一旦注册不能变更,建议使用公司公共QQ号码而不是员工私人号码注册,以免遇到员工离职等情况造成不必要的麻烦。


腾讯QQ及空间分享_第1张图片 

2. 登录成功后会跳转到注册页面,在注册页面需要提交公司或个人的基本资料。下图所示的是公司注册页面:
腾讯QQ及空间分享_第2张图片 

2. 邮箱验证

1. 基本资料提交后,开发者需要进行邮箱验证。如下图所示:
腾讯QQ及空间分享_第3张图片 

2. 验证完成后,开发者可以去创建应用,也可以继续完善资料。如下图所示:
腾讯QQ及空间分享_第4张图片 

3.创建应用,如下图所示:



创建并配置工程

SDK下载地址: http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD

以下以eclipse为开发的IDE进行范例说明:

(1)创建一个工程,并把open-sdk.jar文件和mta_sdk_x.x.x.jar文件拷贝到libs(或lib)目录下,如下图所示:
腾讯QQ及空间分享_第5张图片 
(2)将open-sdk.jar加入编译路径中。
具体的操作步骤为:选中open-sdk.jar,右键菜单中选择Build Path, 选择Add to Build Path,如下图所示:
腾讯QQ及空间分享_第6张图片 
(3)将mta_sdk_x.x.x.jar加入编译路径中。
按照上面的方法,将mta_sdk_x.x.x.jar加入编译路径中。
在工程的Referenced Libraries目录下看到导入的jar包,说明已经成功将jar包加入build path,如下图所示:
腾讯QQ及空间分享_第7张图片

2. 配置AndroidManifest

在应用的AndroidManifest.xml增加配置的节点下增加以下配置(注:不配置将会导致无法调用API);





android:name="com.tencent.tauth.AuthActivity" 
android:noHistory="true" 
android:launchMode="singleTask" >








SDK_V2.0引入了AssistActivity,开发者需在androidManifest.xml中注册。代码如下:

android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize" 
/>

创建实例并实现回调

1. 创建实例

Tencent是SDK的功能入口,所有的接口调用都得通过Tencent进行调用。因此,调用SDK,首先需要创建一个Tencent实例,其代码如下:

@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。
// 其中APP_ID是分配给第三方应用的appid,类型为String。
mTencent = Tencent.createInstance(APP_ID, this.getApplicationContext());
// 1.4版本:此处需新增参数,传入应用程序的全局context,可通过activity的getApplicationContext方法获取
// 初始化视图
initViews();
}


其中,如果你已经添加了”android.permission.INTERNET”和”android.permission.ACCESS_NETWORK_STATE”权限,则无需重复添加。

而”你的AppId”则要替换成具体应用的AppId,例如你的AppId是”222222″,则标签应该是这样的:


2. 实现回调

所有的SDK接口调用,都会传入一个回调,用以接收SDK返回的调用结果。回调的主要接口有两种:

2.1 实现回调 IUiListener

调用SDK已经封装好的接口时,例如:登录、快速支付登录、应用分享、应用邀请等接口,需传入该回调的实例。
IUiListener的实现示例代码如下:

private class BaseUiListener implements IUiListener {
@Override
public void onComplete(JSONObject response) {
mBaseMessageText.setText("onComplete:");
mMessageText.setText(response.toString());
doComplete(response);
}
protected void doComplete(JSONObject values) {
}
@Override
public void onError(UiError e) {
showResult("onError:", "code:" + e.errorCode + ", msg:"
+ e.errorMessage + ", detail:" + e.errorDetail);
}
@Override
public void onCancel() {
showResult("onCancel", "");
}
}


2.2 实现回调 IRequestListener

使用requestAsync、request等通用方法调用sdk未封装的接口时,例如上传图片、查看相册等,需传入该回调的实例。
IRequestListener的实现示例代码如下:

private class BaseApiListener implements IRequestListener {
@Override
public void onComplete(final JSONObject response, Object state) {
showResult("IRequestListener.onComplete:", response.toString());
doComplete(response, state);
}
protected void doComplete(JSONObject response, Object state) {
}
@Override
public void onIOException(final IOException e, Object state) {
showResult("IRequestListener.onIOException:", e.getMessage());
}
@Override
public void onMalformedURLException(final MalformedURLException e,
Object state) {
showResult("IRequestListener.onMalformedURLException", e.toString());
}
@Override
public void onJSONException(final JSONException e, Object state) {
showResult("IRequestListener.onJSONException:", e.getMessage());
}
@Override
public void onConnectTimeoutException(ConnectTimeoutException arg0,
Object arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSocketTimeoutException(SocketTimeoutException arg0,
Object arg1) {
// TODO Auto-generated method stub
}
//1.4版本中IRequestListener 新增两个异常
@Override
public void onNetworkUnavailableException(NetworkUnavailableException e, Object state){
// 当前网络不可用时触发此异常
}
@Override
public void onHttpStatusException(HttpStatusException e, Object state) {
// http请求返回码非200时触发此异常
}
public void onUnknowException(Exception e, Object state) {
// 出现未知错误时会触发此异常
}
}


应用在调用SDK提供的接口时,将实现了对应回调接口的实例传入。当SDK的接口调用完成后,具体如登录、应用邀请和应用分享调用完成后,会回调传入的接口实例。


3. 特别注意

应用调用Andriod_SDK接口时,如果要成功接收到回调,需要在调用接口的Activity的onActivityResult方法中增加如下代码:

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
mTencent.onActivityResult(requestCode, resultCode, data);
}


实现分享到QQ好友和QQ空间


1.QQShareActivity
public class QQShareActivity extends Activity implements OnClickListener {

	private Button btnQQ;
	//腾讯QQ分享实例
	private static Tencent mTencent;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_qq);
		btnQQ = (Button) findViewById(R.id.btn_qq);

		// Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。
		// 其中APP_ID是分配给第三方应用的appid,类型为String。
		mTencent = Tencent.createInstance(Constants.QQ_APP_ID,
				this.getApplicationContext());
		// 1.4版本:此处需新增参数,传入应用程序的全局context,可通过activity的getApplicationContext方法获取
		
		btnQQ.setOnClickListener(this);
	}
	
	@Override
	public void onClick(View v) {
		share(v);
	}

	public void share(View view) {
		//用于装在分享的信息
		final Bundle params = new Bundle();
		
		//分享到QQ
		params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
	    params.putString(QQShare.SHARE_TO_QQ_TITLE, "陈爽");
	    params.putString(QQShare.SHARE_TO_QQ_SUMMARY,  "我是一个分享的内容");
	    params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,  "http://www.baidu.com");
	    params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,"http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif");
	    params.putString(QQShare.SHARE_TO_QQ_APP_NAME,  "掌上钓鱼");
	    
		//分享到QQ空间
	    params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE, QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);
	    params.putString(QzoneShare.SHARE_TO_QQ_TITLE, "分享标题");
	    params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY,  "我是一个分享的内容");
	    params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,  "http://www.baidu.com");
	    ArrayList imageUrls = new ArrayList();
	    imageUrls.add("http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif");
	    params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL,imageUrls);
	    params.putString(QzoneShare.SHARE_TO_QQ_APP_NAME,  "掌上钓鱼");
		

	    new Thread(){
	    	public void run() {
	    		QQShareActivity.mTencent.shareToQzone(QQShareActivity.this,params, new IUiListener() {
	    			
	    			@Override
	    			public void onError(UiError e) {
	    				System.out.println("onError:" + e.errorCode + e.errorMessage);
	    			}
	    			
	    			@Override
	    			public void onComplete(Object response) {
	    				System.out.println("response:"+response);
	    			}
	    			
	    			@Override
	    			public void onCancel() {
	    				System.out.println("onCancel");
	    			}
	    		});
	    	};
	    }.start();
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		mTencent.onActivityResult(requestCode, resultCode, data);
	}
}

2.activity_qq.xml



    



你可能感兴趣的:(android,分享,分享,腾讯,腾讯开放平台,第三方应用,qq空间)