这篇主要介绍实现QQ的分享图片功能,这里用QQ官方提供的SDK。QQ的分享功能直接使用,不需要授权软件,所以比较方便。

一、准备工作

1、创建应用

腾讯QQ互联官网进行注册登录,并且创建应用管理,,获取到你的APP ID和APP Key。这里我已经完成了

2、集成SDK

QQ互联的官方文档下载SDK,并将jar包导入项目中,这里我已经导入完成了。按照官方文档的步骤一步一步的完成。

二、代码

1、将open-sdk.jar加入编译路径

在app目录下的build.gradle中添加

dependencies {implementation fileTree(dir: 'libs', include: '*.jar')
}

然后重新导入一下,这样open-sdk就会导入进来了。

2、配置AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><activityandroid: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="tencent+你的id" /></intent-filter></activity><activityandroid:name="com.tencent.connect.common.AssistActivity"android:configChanges="orientation|keyboardHidden"android:screenOrientation="behind"android:theme="@android:style/Theme.Translucent.NoTitleBar" />

注意 "tencent+你的id"这个地方:如果你的id是123456,那么android:scheme:这个地方你要写成tencent123456。

3、布局文件activity_avatarupload.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/scrollView"android:layout_width="match_parent"android:layout_height="match_parent" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:id="@+id/share"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="QQ分享"app:backgroundTint="#E91E63" /><Buttonandroid:id="@+id/screenshot"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="截图"app:backgroundTint="#E91E63" /><Buttonandroid:id="@+id/take_photo"android:layout_width="match_parent"android:layout_height="wrap_content"android:backgroundTint="#E91E63"android:text="拍照" /><Buttonandroid:id="@+id/choose_from_album"android:layout_width="match_parent"android:layout_height="wrap_content"android:backgroundTint="#E91E63"android:text="选择照片" /><ImageViewandroid:id="@+id/picture"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal" /></LinearLayout>
</ScrollView>

这里的功能主要有对手机的相册和摄像的使用——《Android摄像头相册使用+上传照片至服务器(上篇)》,截图还有分享功能。做过的功能请看原来写的文章,这里主要讲新的截图和分享功能。

4、Avatarupload.java

截图功能

  1. 只截取当前屏幕
  2. 长截屏,比如用到了ScrollView

一张屏幕

                //第一种情况:这里是一张屏幕,并不是长截图View view = getWindow().getDecorView();     // 获取DecorView
//                // 方式一:view.setDrawingCacheEnabled(true);view.buildDrawingCache();sharebitmap = view.getDrawingCache();// 方式二:Bitmap bitmap2 = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas();canvas.setBitmap(bitmap2);view.draw(canvas);

长截屏

    //这里是一张屏幕,是长截图/*** 截取scrollview的屏幕* **/public static Bitmap getScrollViewBitmap(ScrollView scrollView) {int h = 0;Bitmap bitmap;for (int i = 0; i < scrollView.getChildCount(); i++) {h += scrollView.getChildAt(i).getHeight();}// 创建对应大小的bitmapbitmap = Bitmap.createBitmap(scrollView.getWidth(), h,Bitmap.Config.ARGB_8888);final Canvas canvas = new Canvas(bitmap);scrollView.draw(canvas);return bitmap;}

全部代码

public class Avatarupload extends AppCompatActivity {public static final int TAKE_PHOTO = 1;public static final int CHOOSE_PHOTO = 2;private ImageView picture;private Button takePhoto;private Button chooseFromAlbum;private Uri imageUri;private String imagePath = null;private String root;private String image_test;private static final int SUCCESS = 1;private static final int FALL = 2;private Button login;private Button share;private Button logout;private Button screenshot;String thirdLoginId;String name;String image;String sex;private TextView username;private ImageView avatar;private TextView gender;private Platform qq;private Bitmap sharebitmap;private ScrollView scrollView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_avatarupload);//第一步在oncreate方法中进行初始化Tencent mTencent = Tencent.createInstance("id换成自己的", this.getApplicationContext());share=findViewById(R.id.share);share.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//使用腾讯的分享界面,mob分享不了Bundle params1 = new Bundle();
//纯图片分享只可以是本地图片
//分享的类型  SHARE_TO_QQ_TYPE_IMAGE(纯图片分享)params1.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_IMAGE);
//这里我是为了方便从本地直接拿到一个图片地址放到这里的,大家可以根据自己的需求来拿去本地图片的地址params1.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, image_test);
//分享之后弹框左边按钮的内容(这里基本上都写上自己应用的名字)params1.putString(QQShare.SHARE_TO_QQ_APP_NAME, "AndroidProject");params1.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE);mTencent.shareToQQ(Avatarupload.this, params1, new IUiListener() {@Overridepublic void onComplete(Object o) {Log.d("onComplete测试", o.toString());//分享成功之后,需要将原照片删除}@Overridepublic void onError(UiError uiError) {Log.d("onComplete测试", uiError.toString());}@Overridepublic void onCancel() {Log.d("onComplete测试","取消了");}@Overridepublic void onWarning(int i) {Log.d("onComplete测试","警告");}});}});screenshot = findViewById(R.id.screenshot);screenshot.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//第一种情况:这里是一张屏幕,并不是长截图
//                View view = getWindow().getDecorView();     // 获取DecorView
                // 方式一:
//                view.setDrawingCacheEnabled(true);
//                view.buildDrawingCache();
//                sharebitmap = view.getDrawingCache();// 方式二:
//                Bitmap bitmap2 = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
//                Canvas canvas = new Canvas();
//                canvas.setBitmap(bitmap2);
//                view.draw(canvas);//第二种情况:这里是一张屏幕,是长截图getViewGroupBitmapsharebitmap = getScrollViewBitmap(scrollView);//sharepicture = MediaStore.Images.Media.insertImage(getContentResolver(), sharebitmap, "share", "sharepicture");//System.out.println("whq保存到相册:"+sharepicture);root = Avatarupload.this.getExternalFilesDir("pic").getAbsolutePath();image_test = root+"/share.png";System.out.println("whq保存到相册:"+root);File file = new File(image_test);try {file.createNewFile();FileOutputStream fos = new FileOutputStream(file);sharebitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);fos.close();} catch (IOException e) {e.printStackTrace();}
//                System.out.println("whq保存到相册sharebitmap:"+root);System.out.println("whq保存到相册sharebitmap:"+image_test);picture.setImageBitmap(sharebitmap);}});}//这里是一张屏幕,是长截图/*** 截取scrollview的屏幕* **/public static Bitmap getScrollViewBitmap(ScrollView scrollView) {int h = 0;Bitmap bitmap;for (int i = 0; i < scrollView.getChildCount(); i++) {h += scrollView.getChildAt(i).getHeight();}// 创建对应大小的bitmapbitmap = Bitmap.createBitmap(scrollView.getWidth(), h,Bitmap.Config.ARGB_8888);final Canvas canvas = new Canvas(bitmap);scrollView.draw(canvas);return bitmap;}
}

QQ分享功能实现-Android相关推荐

  1. Android 微信分享与QQ分享功能(原生实现)

    微信分享与QQ分享功能现在都挺常见的,可以根据一些第三方社会化分功能快速实现,不过多多少少都不怎么纯净,最好都是自己看官方文档来实现就最好了~ 一.微信分享 微信分享功能需要先在微信开放平台注册应用并 ...

  2. Android 第三方QQ分享功能实现

    QQ分享功能记录和一些获取APP签名使用工具,微信分享功能现在需要公司开发者账号了,这里就不写了. 文章目录 一.QQ互联官网 1.获取应用APPID 2.下载官方SDK 二.代码部分 1.manif ...

  3. React Native 轻松集成分享功能(Android 篇)

    关于推送的集成请参考这篇文章,关于统计的集成请参考这篇文章,本篇文章将引导你集成分享功能. 在集成插件之前,需要在各大开放平台上成功注册应用,并通过审核(支持 3 个可选的主流平台).支持的平台如下: ...

  4. Android微信App 分享功能调整,Android 微信SDK分享功能(1)

    转于:http://blog.csdn.net/freesonhp/article/details/10296141 ----------------------------------------- ...

  5. 关于QQ分享功能的一些总结

    这几天的Android专业实训,老师布置了一些题目,有些出现了QQ分享,于是自己探索了一下分享功能的实现. 其实很简单,第一步注册腾讯开放平台,第二步创建应用,第三部按照提示步骤上传各种东西,然后提交 ...

  6. iOS单独集成QQ分享功能

    2019独角兽企业重金招聘Python工程师标准>>> (1)首先,把TencentOpenAPI.framework.TencentOpenApi_IOS_Bundle.bundl ...

  7. js生成二维码,web页面,移动h5页添加微信qq分享功能

    js文件 qrcode.js 代码 /*from tccdn minify at 2014-6-4 14:59:43,file:/cn/c/c/qrcode.js*/ /*** @fileovervi ...

  8. Android实现QQ分享功能

    第一步: 打开连接下载配置文件到自己项目的libs中 http://wiki.open.qq.com/wiki/mobile/SDK下载 解压Android_SDK_V2.6 ,把open-sdk.j ...

  9. vue开发APP使用微信分享和QQ分享功能

    条件 微信开放平台申请微信开放平台appid 腾讯开放平台申请腾讯开放平台appid 打包环境Hbuilder manifest.json中plus下的plugins下添加如下代码,并填写你的appi ...

  10. android 调用原生分享功能,调用Android 系统自带分享功能

    1. 设置Intent的action为Intent.ACTION_SEND. 2. 把要分享的数据通过.putExtra()传入intent. 3. 设置类型.setType(). 4.startAc ...

最新文章

  1. 华为201万年薪招毕业生!来自这些高校
  2. Python输出黄金分隔数列前n项。 黄金分隔数列由Fibonacci数列相邻两项之比组成:1/1,1/2,2/3,3/5,5/8,...其取值逐渐接近黄金分隔数。
  3. 在项目里交叉使用Swift和OC【转】
  4. 股市太火 !“牛市”搜索热度暴涨9倍:80后疯狂开户
  5. Jupyter Lab的学习笔记
  6. 《绝地求生》外挂源代码被公布,或迎神仙大战时代?
  7. [Spring-cloud-eureka]使用 gradle, spring boot,Spring cloud Eureka 搭建服务注册中心
  8. Nginx-配置https虚拟服务(访问http时自动跳转https)
  9. NG-ZORRO 7.0.0 发布,Ant Design 的 Angular 实现
  10. git命令之git fetch的用法
  11. 如何创建WooCommerce弹出窗口来增加销售额(6种经过验证的方法)
  12. mysql 联合主键自增,mysql联合主键自增、主键最大长度小记
  13. @Deprecated 的功能
  14. 从ccps项目中学习bottle,sqlalchemy,jinja2
  15. 计算机毕业设计ssm焦虑自测与交流平台k43cf系统+程序+源码+lw+远程部署
  16. 【夏季养生以心为大】
  17. Oracle 精编实用手册
  18. 《让子弹飞》系列——去浦东的老三
  19. 智慧农业·智能灌溉系统
  20. glsl boom

热门文章

  1. 卡第那思让法铁的螺丝紧固件的数量一年内减少了15%
  2. 计算机策略 提高网速,win10增加网速的方法_win10如何提高电脑网速
  3. php微信卡劵教程,微信卡券添加功能的实现-PHP
  4. python图片对比模块_使用Python的PIL模块来进行图片对比
  5. 全息投影技术及其实现(附素材下载)
  6. 缺项级数的收敛域求解
  7. 英语口语测试评分软件,7款超人气英语口语app深度测评
  8. 第六篇:A133 用DragonSN工具刷SN号,MAC地址细节问题
  9. 个性化的CRM具备的功能有哪些
  10. Codesys学习调试笔记2