开始分享之旅第一篇,爬过好多坑,在这里总结下供和我一样的菜鸟学习,有不足希望留言指点,不喜勿喷!
最终成果图:
001.相信看分享的都会新建Android工程了吧,所以直接开始配置第三方jar,下载地址点击打开链接
解压缩,找到里面的这两个包,复制到Android工程的libs目录下,之后右键工程按图一路操作即可
红4目录因为我已经添加过了所以没有,这块就是你刚才复制的2个jar包,选中点击ok即导入jar包完成。
002.配置 AndroidManifest.xml开始:如下图添加权限:红1表示访问网络,红2表示获取网络状况
下面的2个Activity是他们封装的,直接复制到你的配置文件即可, <data android:scheme="tencent00000000" /> , 注意前面的tencent不可省略,否则分享失败!APP_Id这个必须你你提前申请的,如果没有申请点击地址:腾讯开发平台 按照官方文档的提示完成申请提交,等待审核通过即可获得APP_ID。 到这里配置就做好了,下面开始编写代码
<!-- 调用授权时启动的Activity -->
<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="tencent00000000" /> <!-- tencent+APP_ID 此处的APP_ID是你之前申请的 -->
</intent-filter>
</activity>
<!-- 登录时的调用的activity -->
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="behind"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
</application>
003.编写代码:里面的常量我大概提了下,具体的功能看你下载的最新adk里面的文档,有详细介绍
public class MainActivity extends Activity {
//申请的id
private static final String APP_ID="清单文件涂红的APP_ID";
// Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。
private Tencent mTencent;
private Button showBt;
private TextView message;
//回调实例
private IUiListener listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showBt=(Button)findViewById(R.id.button1);
message=(TextView)findViewById(R.id.textView1);
//显示分享的状态接口
listener=new IUiListener() {
@Override
public void onError(UiError arg0) {
//shouMessage信息函数是一个抽象函数,需要在activity重写
showMessage("Login Error"+ arg0.errorMessage);
}
@Override
public void onComplete(Object arg0) {
showMessage("Login Success"+ arg0.toString());
}
@Override
public void onCancel() {
showMessage("Login Cancel");
}
};
showBt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//分享函数
show();
}
});
}
//分享到QQ好友,朋友圈,空间
public void show() {
if(mTencent==null){
initTencent();
}
String Title="AR 魔幻恐龙";
String ImageUrl="http://pic51.nipic.com/file/20141016/24066_130156779281_2.jpg";//随便找的图片
String TargetUrl="http://www.qikaqika.com/";
String Summny="我在测试QQ分享功能,你是哪个鬼,,,成功成功";
Bundle bundle = new Bundle();
bundle.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
//这条分享消息被好友点击后的跳转URL。
bundle.putString(QQShare.SHARE_TO_QQ_TARGET_URL, TargetUrl);
//分享的标题。注:PARAM_TITLE、PARAM_IMAGE_URL、PARAM_SUMMARY不能全为空,最少必须有一个是有值的。
bundle.putString(QQShare.SHARE_TO_QQ_TITLE, Title);
//分享的图片URL
bundle.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, ImageUrl);
//分享的消息摘要,最长40个字
bundle.putString(QQShare.SHARE_TO_QQ_SUMMARY, Summny);
//手Q客户端顶部,替换“返回”按钮文字,如果为空,用返回代替
bundle.putString(QQShare.SHARE_TO_QQ_APP_NAME, "??我在测试");
mTencent.shareToQQ(this, bundle , listener);
}
//初始化实例
private void initTencent(){
mTencent=Tencent.createInstance(APP_ID, this);
}
//分享信息函数
private void showMessage(String msg){
message.setText(msg);
}
//分享回调:应用调用Andriod_SDK接口时,如果要成功接收到回调,需要在调用接口的Activity的onActivityResult方法
/*
* 第一个参数为请求码,即调用startActivityForResult()传递过去的值
* 第二个参数为结果码,结果码用于标识返回数据来自哪个新Activity
* 第三个参数为返回的信息
*/
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (null != mTencent)
mTencent.onActivityResult(requestCode, resultCode, data);
}
}
004.ok已经完成了QQ分享(包括空间、好友、群、讨论组),运行即可看到效果,有了第三方框架很简单吧,祝大家早日脱离菜鸟队列!
005.写不写无所谓了,一个单纯的QQ空间分享,直接添加在刚才的Activity里面即可,支持多张图片文档里面有红色提示目前只支持一张,具体不清楚为什么传数组进去,代码如下(布局文件就不贴代码了,简单添加了一个分享button,一个显示分享结果的textview):
private ArrayList<String> list=new ArrayList<String>();
//分享到QQ空间
private void shareToQzone () {
if(mTencent==null){
initTencent();
}
list.add("http://pic51.nipic.com/file/20141016/24066_130156779281_2.jpg");
list.add("http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif");
Bundle bundle = new Bundle();
//分享类型
bundle.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE,QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);
bundle.putString(QzoneShare.SHARE_TO_QQ_TITLE, "标题");//必填
bundle.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, "摘要");//选填
bundle.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL, "http://www.qikaqika.com/");//必填
bundle.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, list);//支持多张图片
mTencent.shareToQzone(this, bundle, listener);
}