QQ分享功能实现-Android

这篇主要介绍实现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;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/253377.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

计算机桌面文件如何发送给qq好友,QQ怎么与好友分享屏幕 如何共享电脑屏幕给好友...

手机QQ有屏幕共享吗&#xff1f; 如果有 怎么共享呢 手机qq现在还有共享屏幕的功能对不起现在只有电脑版的才能共享屏幕 手机qq中的分享屏幕怎么用 还在为好友寻求帮助而烦恼吗&#xff1f;来试试屏幕分享吧&#xff0c;它可以让你的好友亲临其境的观看你的电脑屏幕发生的事情。…

解决QQ分享屏幕对方无法听到电脑系统声音的问题

0x00 方法一 也就是网上主流的通过设置立体声混音为默认设备&#xff0c;这种方法有弊端&#xff0c;只能实现以下两种效果&#xff1a; 1.能听到电脑系统声音&#xff0c;而人说话无声 2.电脑声音和人声都有&#xff0c;但是你会听到自己说话的回声。 话不多说&#xff0…

Web安全神器-Burpsuite社区版/专业版下载、安装及使用教程

一、Burpsuite下载 Burp Suite是进行Web应用安全测试的一个集成平台&#xff0c;无缝融合各种安全工具并提供全面的接口适配&#xff0c;支持完整的Web应用测试流程&#xff0c;从最初的映射和应用程序的攻击面分析到发现和利用安全漏洞等领域均适用&#xff0c;同时还可以做抓…

react学习

简介 起源于Facebook与传统mvc的关系&#xff1a;轻量级的视图层库&#xff0c;将视图抽象成组件 特点 声明式设计高效 通过虚拟dom&#xff0c;减少真实dom交互灵活 适配已知的库或框架jsx js语法扩展组件 代码可复用单向响应数据流 减少重复代码&#xff0c;比传统…

【C++】vector的使用

目录 1.什么是vector2.容量操作3.增删查改4.杨辉三角&#xff08;使用vector开辟二维数组&#xff09; 1.什么是vector vector就是一个动态顺序表&#xff0c;比起string&#xff0c;它不仅可以存储字符&#xff0c;还可以存储其他的内置类型以及自定义类型。 vector在使用时&…

Maven jar 包下载失败问题处理【配置Maven国内源】

前言 很多同学在Maven里下载一些依赖的时候&#xff0c;即下载【jar 包】的时候总是会出现一些问题&#xff0c;这里专门做一个教程讲解一下 其实这和你的Maven配置是有关系的&#xff0c;因为Maven是一个国际站点&#xff0c;它的仓库是在国外的&#xff0c;所以我们有时候在下…

易语言零基础新手入门系列教程 第一课

机器人小鑫易语言源码&#xff08;作业用&#xff09;&#xff1a; 机器人小鑫源码 - 第一课.zip 视频教程文字版&#xff1a; 新手学习易语言的几点建议 1、由浅入深、由易到难、循序渐进&#xff0c;切勿急功近利&#xff0c;想一步登天&#xff01; 这是学习的一般规…

是否想过中文编程呢?易语言使用的体验和感想

对于很多自以为英语不好就不能学好编程的童鞋来说&#xff0c;其实编程和英语真的不是那么的紧密&#xff0c;易语言可能是一种不错的选择。这里我们来体验一下&#xff0c;和其他语言做一下对比。 一、变量的声明 易语言中用ctrll和ctrlG来声明局部和全局变量&#xff0c;代码…

这次,易语言彻底“输了”,而另一新式中文编程却胜券在握

20多年来&#xff0c;饱受诟病的易语言 众多编程语言中&#xff0c;python、C、C语言、Java等&#xff0c;脱颖而出。但有一门冷门的编程语言&#xff0c; 大多数人可能听都没听过&#xff0c;它就是易语言。 什么是易语言啊&#xff1f;听起来好陌生。 笔者“深扒”了一下&…

易语言脚本开发入门教程

天蓝易语言脚本入门开发系列教程第1讲初识易语言 天蓝易语言脚本入门开发系列教程第2课简单控件变量 天蓝易语言脚本入门开发系列教程第3讲简单登录器制作 天蓝易语言脚本入门开发系列教程第4讲计算器实现 天蓝易语言脚本入门开发系列教程第5讲时钟随机数 天蓝易语言脚本入门开…

易语言学习笔记——基础篇

易语言学习笔记20180710 一、 易语言的数据类型可以分为基本数据类型和特殊数据类型 1. 其中基本数据类型分为&#xff1a; ① 数值型 ② 逻辑型 ③ 日期时间型 ④ 文本型 ⑤ 字节集型 ⑥ 子程序指针型 2. 然后基本数据类型中的数值类型有包含了&a…

易语言简介

易语言&#xff08;EPL&#xff09;是一门以中文作为程序代码编程语言&#xff0c;其以“易”著称&#xff0c;创始人为吴涛。易语言早期版本的名字为E语言。其最早的版本的发布可追溯至2000年9月11日。创造易语言的初衷是进行用中文来编写程序的实践&#xff0c;方便中国人以中…

“易语言.飞扬”十分钟入门教程

“易语言.飞扬”十分钟入门教程 作者&#xff1a;liigo 2007.1.1 原文链接&#xff1a;http://blog.csdn.net/liigo/archive/2007/01/01/1472077.aspx 转载必须注明出处&#xff1a;http://blog.csdn.net/liigo 第 1 分钟&#xff1a;序曲 第 2 分钟&#xff1a;“易语言.飞…

《MYSQL必知必会》读书笔记1

目录 行 主键 MYSQL工具 使用MYSQL 连接 检索数据 检索&#xff08;SELECT&#xff09; 限制结果&#xff08;LIMIT&#xff09; 排序检索&#xff08;ORDER BY&#xff09; 过滤数据&#xff08;WHERE&#xff09; 过滤数据&#xff08;AND、OR&#xff09; 通配符…

【SpringCloud】SpringAMQP

文章目录 1、AMQP2、基本消息模型队列3、WorkQueue模型4、发布订阅模型5、发布订阅-Fanout Exchange6、发布订阅-DirectExchange7、发布订阅-TopicExchange 1、AMQP Advanced Message Queuing Protocol&#xff0c;高级消息队列协议。是用于在应用程序之间传递业务消息的开放标…

黑马Redis视频教程实战篇(一)

目录 一、短信登录 1.1、导入黑马点评项目 &#xff08;1&#xff09;导入黑马点评sql脚本 &#xff08;2&#xff09;导入后端项目 &#xff08;3&#xff09;导入前端项目 1.2、基于Session实现登录流程 1.3 、实现发送短信验证码功能 1.4 、实现登录拦截功能 1.5 、隐…

创建第一个.NET MAUI应用

1.打开VS2022,创建新项目,并选择.NET MAUI应用,然后点击下一步 2.输入项目相关配置,然后点击下一步 3. 选择框架版本,然后点击创建 4.项目创建成功后会自动打开概述页 5.平台框架切换 6.启动应用,如有下图提示,启动开发者模式 成功启动应用 7.修改应用 修改MainPage.xml如下图…

阿里直播平台面临的技术挑战

大流量、高并发场景下&#xff0c;大型直播的技术挑战一般体现在如下几个方面&#xff1a; 视频流的处理、分发 播放质量保障 视频可用性监控 超大直播间实时弹幕及聊天互动 高性能消息通道 内容控制&#xff0c;如算法鉴黄、文本过滤 系统可用性、稳定性保障 本文将针对其中的…

龙珠直播php,斗鱼、全民TV、龙珠等直播平台排行榜 看视频直播发展趋势

从2015年下半年起&#xff0c;视频直播市场便显露出了火爆之势。除了越来越多的人喜欢观看、愿意参与直播之外&#xff0c;直播类 App也如雨后春笋般不断涌出。 而2016年&#xff0c;视频直播领域更是出现了火爆场面&#xff0c;尤其是刚刚过去的一个月&#xff1a;先是卷土重来…

短视频和直播,哪个会火得更久呢

短视频和直播&#xff0c;哪个会火得更久呢 曾经&#xff0c;电视剧和综艺节目是人们在工作之余放松的主要方式&#xff0c;目前越来越多的电视剧和网剧依靠着当红明星、大 IP 能够在前期获得大量的热度&#xff0c;但在播出之后收视率往往不理想。随着时间的增长&#xff0c;…