使用的sdk版本: V2.2.2(发布日期:2014.3.17)
弱弱的提醒下:
1.配置清单等环境搭建,这里就不多说了,可以去看看我的另外一篇博客,QQ的第三方登录,那里有介绍。
2.这里集成的是默认分享的功能,即分享的网页。分享音乐或者纯图片的功能改动的不大,这里就不写了。
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:scrollbars="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<!-- title -->
<LinearLayout
android:id="@+id/title_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left|center_vertical"
android:text="title(标题)" />
<EditText
android:id="@+id/shareqq_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="测试"
/>
</LinearLayout>
<!-- summary -->
<LinearLayout
android:id="@+id/summary_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_summary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left|center_vertical"
android:text="summary(摘要)" />
<EditText
android:id="@+id/shareqq_summary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="不知道说什么" />
</LinearLayout>
<LinearLayout
android:id="@+id/targetUrl_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left|center_vertical"
android:text="targetUrl_lable(目标网站,如 百度知道你)" />
<EditText
android:id="@+id/shareqq_target_url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="http://www.baidu/"
android:inputType="textUri|textMultiLine" />
</LinearLayout>
<!-- imageUrl -->
<LinearLayout
android:id="@+id/imageUrl_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left|center_vertical"
android:text="imageUrl_lable" />
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/radioBtn_net_image"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:checked="true"
android:text="str_image_net(网络图片)" />
<RadioButton
android:id="@+id/radioBtn_local_image"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="str_image_local(本地图片)" />
</RadioGroup>
</LinearLayout>
<EditText
android:id="@+id/shareqq_image_url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:text="http://img0.bdstatic/img/image/shouye/gxgxnr-9407468907.jpg"
android:inputType="textUri|textMultiLine" />
</LinearLayout>
<!-- appName -->
<LinearLayout
android:id="@+id/appName_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left|center_vertical"
android:text="appName_lable" />
<EditText
android:id="@+id/shareqq_app_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Test" />
</LinearLayout>
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/shareqq_commit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="35dp"
android:text="commit" />
</LinearLayout>
</LinearLayout>
布局没做美化,一切为了简单起见。
活动代码:
**
* 测试qq的分享 这里集成的是默认的分享
*/
public class TestQQ_Share extends Activity implements OnClickListener {
private TextView title = null;
private TextView imageUrl = null;
private TextView targetUrl = null;
private TextView summary = null;
private TextView appName = null;// app名称,用于手Q显示返回
private int shareType = QQShare.SHARE_TO_QQ_TYPE_DEFAULT;
private EditText mEditTextAudioUrl;
private int mExtarFlag = 0x00;
// 申请的id
public String mAppid = "222222";
private QQShare mQQShare = null;
public QQAuth mQQAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.acy_testqqshare);
initView();
}
public void initView() {
title = (TextView) findViewById(R.id.shareqq_title);
imageUrl = (TextView) findViewById(R.id.shareqq_image_url);
targetUrl = (TextView) findViewById(R.id.shareqq_target_url);
summary = (TextView) findViewById(R.id.shareqq_summary);
appName = (TextView) findViewById(R.id.shareqq_app_name);
// 对Button添加监听器
findViewById(R.id.shareqq_commit).setOnClickListener(this);
findViewById(R.id.radioBtn_net_image).setOnClickListener(this);
findViewById(R.id.radioBtn_local_image).setOnClickListener(this);
initShareUI(shareType);
// Tencent类是SDK的主要实现类,通过此访问腾讯开放的OpenAPI。
mQQAuth = QQAuth.createInstance(mAppid, this.getApplicationContext());
mQQShare = new QQShare(this, mQQAuth.getQQToken());
// 最后一个二进制位置为1, 其他位不变, 不注释掉的话 会默认分享第一项的联系人
// mExtarFlag |= QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.shareqq_commit: // 提交
final Bundle params = new Bundle();
params.putString(QQShare.SHARE_TO_QQ_TITLE, title.getText()
.toString());
params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, targetUrl
.getText().toString());
params.putString(QQShare.SHARE_TO_QQ_SUMMARY, summary.getText()
.toString());
params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, imageUrl.getText()
.toString());
params.putString(
shareType == QQShare.SHARE_TO_QQ_TYPE_IMAGE ? QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL
: QQShare.SHARE_TO_QQ_IMAGE_URL, imageUrl.getText()
.toString());
params.putString(QQShare.SHARE_TO_QQ_APP_NAME, appName.getText()
.toString());
params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, shareType);
params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, mExtarFlag);
doShareToQQ(params);
return;
case R.id.radioBtn_net_image: // 定向分享网络图片
if (shareType == QQShare.SHARE_TO_QQ_TYPE_IMAGE) {
// 纯图分享只能支持本地图片
startPickLocaleImage(this);
showToast("纯图分享只支持本地图片");
}
return;
case R.id.radioBtn_local_image: // 定向分享本地图片
startPickLocaleImage(this);
return;
}
initShareUI(shareType);
}
/**
* 初始化UI
*
* @param shareType
*/
private void initShareUI(int shareType) {
switch (shareType) {
case QQShare.SHARE_TO_QQ_TYPE_IMAGE:
imageUrl.setText(null);
startPickLocaleImage(this);
return;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String path = null;
// 获取选中的本地图片的地址
if (resultCode == Activity.RESULT_OK && requestCode == 0) {
if (data != null && data.getData() != null) {
// 根据返回的URI获取对应的SQLite信息
Uri uri = data.getData();
final String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = this.getContentResolver().query(uri, proj,
null, null, null);
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
path = cursor.getString(column_index);
}
}
if (path != null) {
imageUrl.setText(path);
} else {
if (shareType != QQShare.SHARE_TO_QQ_TYPE_IMAGE) {
showToast("请重新选择图片");
}
}
}
/**
* 选择本地的图片
*/
private void startPickLocaleImage(Activity activity) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
activity.startActivityForResult(
Intent.createChooser(intent,
activity.getString(R.string.str_image_local)), 0);
}
/**
* 用异步方式启动分享 会回调服务器的数据
*
*/
private void doShareToQQ(final Bundle params) {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
mQQShare.shareToQQ(TestQQ_Share.this, params,
new IUiListener() {
@Override
public void onCancel() {
if (shareType != QQShare.SHARE_TO_QQ_TYPE_IMAGE) {
// Util.toastMessage(activity,
// "onCancel: ");
}
}
@Override
public void onComplete(Object response) {
// TODO Auto-generated method stub
// Util.toastMessage(activity,
// "onComplete: " + response.toString());
}
@Override
public void onError(UiError e) {
// TODO Auto-generated method stub
// Util.toastMessage(activity, "onError: "
// + e.errorMessage, "e");
}
});
}
}).start();
}
Toast mToast = null;
private void showToast(String text) {
if (mToast != null && !super.isFinishing()) {
mToast.setText(text);
mToast.show();
return;
}
mToast = Toast.makeText(this, text, Toast.LENGTH_SHORT);
mToast.show();
}
}
只能感叹qq封装的好啊,注释都可以不写了。
运行截图:
1.启动的时候:
各个输入文本,可以看后面的中文意思,这个没啥说的。
2.提交的时候:
3.点击分享到qq空间的写评论:
4.然后我们就可以打开自己的qq空间查看分享的内容:
注意:
1.你分享给qq好友的时候,肯定是没有这么丰富的内容,是分享的目标地址网址,比如我这就是百度知道的网址。
2.分享的实现,不需要登录。
更多推荐
QQ的分享
发布评论