Android实现截图分享qq,微信

代码地址如下:
http://www.demodashi.com/demo/13292.html

前言

现在很多应用都有截图分享的功能,今天就来讲讲截图分享吧
今天涉及到以下内容:
1. android权限设置及申请
2. 截图分享功能解析
3. 截图分享功能的调用
4. 项目结构图和效果图

一. android权限设置及申请

在实现截图分享功能的的时候,会涉及到读写权限的申请问题。
第一步,你需要在mainfast.xml中注册读写权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

为了适应android6.0及以上手机的使用,我们最好也要加上6.0以上读写权限的申请。关于android6.0以上权限的申请,我之前封装过一个工具类,使得权限申请变得异常简单,有兴趣的同学可以看看我的另一篇文章:
android权限申请Permission
这里就不做详细解释了。

二.截图分享功能解析

2.1 原理

截屏分享的原理是首先获取当前屏幕的bitmap,然后将它生成图片文件保存到本地,接着调用分享功能,将它分享到你要分享的地方,下面做些讲解。

2.2 获取屏幕大小

在截屏开始的时候,需要获取屏幕的宽高:

        DisplayMetrics dm = new DisplayMetrics();WindowManager mWindowManager = (WindowManager) AppContext.getInstance().getSystemService(Context.WINDOW_SERVICE);Display display = mWindowManager.getDefaultDisplay();display.getMetrics(dm);int width = dm.widthPixels;int height = dm.heightPixels;

然后是获取屏幕的bitmap:

Bitmap bmp = view.getDrawingCache();
bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height - statusBarHeight);

获取bitmap之后,我们需要将bitmap保存到本地,保存之前,我们需要在手机上设置一个保存路径,sdard的判断必不可少:

        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {return true;}return false;

在sdcard存在的情况下,获取手机内部缓存路径:

File cacheFile = AppContext.getInstance().getExternalCacheDir();

然后将bitmap保存到本地:

            try {// 图片文件路径imagePath = getDiskCachePath()+"share.png";LogUtil.i("====imagePath====" + imagePath);File file = new File(imagePath);FileOutputStream os = new FileOutputStream(file);bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);os.flush();os.close();return imagePath;} catch (Exception e) {LogUtil.e("====screenshot:error====" + e.getMessage());}

这一切搞定后,调用分享功能:

        //分享if(StringUtil.isNotEmpty(path)){ShareImage(context,path);}

以上是对截屏分享的一个原理流程介绍,代码显得有些杂乱,不过不要紧,我已经将这些代码整合成一个工具类ShotShareUtil,方便大家调用,下面看看ShotShareUtil在mainActivity中的调用吧

三.截图分享功能的调用

直接给出MainActivity的代码吧,方便大家理解:

package com.android.testdemo.main;import android.view.View;
import android.widget.Button;import com.android.testdemo.R;
import com.android.testdemo.base.BaseActivity;
import com.android.testdemo.base.LogUtil;import butterknife.BindView;public class MainActivity extends BaseActivity{@BindView(R.id.button1)Button mBtnText;@Overrideprotected int getContentViewId() {return R.layout.activity_main;}@Overrideprotected void initData() {//这里需要检测android6.0以上读写权限,关于权限申请我之前已经讲过,有需要的同学可以参考以下链接//android6.0以上权限申请:http://www.demodashi.com/demo/12432.html}@Overrideprotected void setListener() {mBtnText.setOnClickListener(this);}@Overridepublic void onClick(View v) {super.onClick(v);switch (v.getId()) {case R.id.button1:LogUtil.i("=====截屏分享====");ShotShareUtil.shotShare(mContext);break;default:break;}}}

activity_main.xml文件中就布了一个按钮,方便测试:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.android.testdemo.main.MainActivity"><Button
        android:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:text="测试"app:layout_constraintTop_toTopOf="parent"tools:ignore="MissingConstraints"tools:layout_editor_absoluteX="148dp" /></android.support.constraint.ConstraintLayout>

最后给出项目结构图和效果图

四.项目结构图和效果图

项目结构图

项目效果图

运行效果图

运行效果图

Android实现截图分享qq,微信

代码地址如下:
http://www.demodashi.com/demo/13292.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

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

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

相关文章

分享qq报错Only fullscreen opaque activities can request orientation

这两天突然发现了一个项目中分享链接到qq时崩溃但分享到微信却啥事没有的问题&#xff0c;然后连上usb&#xff0c;查看error发现报了这样一个错&#xff1a;Only fullscreen opaque activities can request orientation。然后就在网上搜答案&#xff0c;原来是安卓8才出现的问…

超级便捷精巧绿色的屏幕分享小软件IntelexEMC

摘要&#xff1a;因需求特殊&#xff0c;即需要在关闭QQ、微信或其他通讯软件的情况下进行屏幕分享。于是&#xff0c;整理好思路&#xff0c;开始写一个简易的屏幕分享软件&#xff0c;打了鸡血似的写了两天&#xff0c;突然&#xff0c;在查资料时发现网上有一款名叫InletexE…

Flutter 项目实战 截图分享到微信|QQ|微博 十二

/ 截图功能演示 / / 跨进程通信案例 / 调用三方app进行支付 : 支付宝支付、微信支付、银行app支付 ........ 调用三方app进行分享 : 微信分享、QQ分享、微博分享、钉钉分享、分享邮箱、打印、蓝牙....... 调用三方app进行登录 : 微信登录、QQ登录、微博登录、支付宝登录、Twit…

直接在屏幕上,选取区域进行截屏分享到QQ、微信

在手机屏幕上&#xff0c;选择某个区域进行截屏。 1&#xff0c;借用网络上一张图片&#xff0c;说明每个点的位置&#xff0c;主要是左上角和右下角这两个点。中间那块浅蓝色的就是我们的目标区域了 /*** 将一个view保存成图片* param view 传入的目标view* return*/public…

android qq悬浮窗口,qq悬浮窗口在哪里打开?怎么设置QQ悬浮窗?qq悬浮窗口设置方法分享...

QQ悬浮窗口在哪打开 qq悬浮 1.打开手机设置应用&#xff0c;点击进入设置界百面。 2.在设置应用中&#xff0c;选择“其他度应用管理”选问项。 3.打开选择答已经安装的应用&#xff0c;选择“QQ”。 4.点击“权限回管理”&#xff0c;进入权限管理界面。 5.点击“显示悬浮窗”…

qq三国行脚商脚本思路分享

qq三国行脚商玩法基于按键精灵脚本写作思路分享 欢迎和我一起学习讨论游戏脚本的写作过程游戏玩法简介脚本写作思路知易行难后续痛点和优化自我介绍后记 欢迎和我一起学习讨论游戏脚本的写作过程 你好呀&#xff01; 这是你第一次来到我的主页。如果你想学习如何使用按键精灵等…

QQ微信等分享链接时系统提取的标题和图片代码

有的时候&#xff0c;在我们写好网页后&#xff0c;需要通过QQ/微信等即时通讯工具分享出去&#xff0c;这时候&#xff0c;系统会提取网页的标题和图片&#xff0c;默认提取title和网页的第一张图片。 当然&#xff0c;我们也可以指定分享的文字和图片。以图片为例&#xff0…

远程屏幕共享软件哪个比较好用

我们远程开会需要共享屏幕来讨论会议内容&#xff0c;我们远程培训需要共享屏幕让学生一目了然自己要讲的内容&#xff1b;我们远程运维需要共享屏幕让工程师可以协同远程运维。那么共享屏幕软件哪个比较好用&#xff1f; 相信提到共享屏幕软件&#xff0c;我们首先想到的就是q…

QQ分享功能实现-Android

这篇主要介绍实现QQ的分享图片功能&#xff0c;这里用QQ官方提供的SDK。QQ的分享功能直接使用&#xff0c;不需要授权软件&#xff0c;所以比较方便。 一、准备工作 1、创建应用 腾讯QQ互联官网进行注册登录&#xff0c;并且创建应用管理&#xff0c;&#xff0c;获取到你的…

计算机桌面文件如何发送给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…