最近想给一个APP添加分享屏幕截图的功能,就尝试找了一圈相关的Package,最后找倒是没找到,倒是在StackOverflow找到了一个解决方法。

布局及相关权限

  • AndroidManifest.xml权限添加
<!--    STORAGE PERMISSION FOR SCREEN SHOT-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
  • 存储路径配置provider_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths><external-path name="external_files" path="."/>
</paths>
  • 布局
...
<LinearLayout android:id="@+id/shared_preferences_container"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#7E03A9F4"><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:textAlignment="center"android:layout_weight="10"android:text="@string/share_info"/><Button android:id="@+id/share"android:background="@drawable/ic_share"android:layout_weight="1"android:layout_width="32dp"android:layout_height="32dp"android:layout_marginRight="10dp"/>
</LinearLayout>
...

Code

  • 主要引用
...
Button share = (Button) findViewById(R.id.share);
share.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Bitmap bitmap = takeScreenshot(gameWeb);saveBitmap(bitmap);shareIt(GameActivity.this);}
});
...
  • 截图
public Bitmap takeScreenshot(View v) {View rootView = findViewById(android.R.id.content);Bitmap bitmap = Bitmap.createBitmap(rootView.getWidth(),rootView.getHeight(), Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);rootView.draw(canvas);return bitmap;
}
  • 存图
public void saveBitmap(Bitmap bitmap) {Date dNow = new Date( );SimpleDateFormat ft = new SimpleDateFormat("yyyyMMddhhmmss");imagePath = new File(Environment.getExternalStorageDirectory() + "/DCIM/Share_"+ft.format(dNow)+".png");if (!imagePath.exists()) {Log.d("path", imagePath.toString());FileOutputStream fos = null;try {fos = new FileOutputStream(imagePath);bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);fos.flush();fos.close();} catch (FileNotFoundException e) {Log.e("GREC", e.getMessage(), e);} catch (java.io.IOException e) {e.printStackTrace();Log.e("GREC", e.getMessage(), e);}}
}
  • 分享

如需了解更多请访问: https://www.emperinter.info/2022/05/03/how-to-add-a-share-button-in-android-app/

如何在安卓APP中添加分享按钮?相关推荐

  1. 如何在html中添加分享按钮

    效果如图所示: 第一步,搜索"百度产品中心   站长与开发者服务中心  百度分享",进入百度分享页面. 第二步,登录百度分享,点击获取代码.                     ...

  2. html页面怎么添加打印,在网页中添加打印按钮或链接的方法

    在网页中添加打印按钮或链接的方法 发布时间:2020-05-27 17:38:35 来源:亿速云 阅读:347 作者:鸽子 打印按钮或链接是对网页的简单添加 CSS(层叠样式表)使你可以控制屏幕上的网 ...

  3. 如何在eclipse制作的APP中添加背景图

    如何在eclipse制作的APP中添加背景图 1.首先把图片拉入drawable-hdpi中,a1.jpg(注:图片名不可为中文) 2.在.xml文件中加入android:background=&qu ...

  4. 网站添加“分享按钮”

    站长基本上都会给自己网站添加"分享按钮" 1.http://www.bshare.cn/ 和 2.http://www.jiathis.com/ 3.百度分享:(推荐) http: ...

  5. qsql 关联_QTableView与QSqlTableModel显示mysql数据库中的数据,怎么在QTableView的项中添加chekbox按钮与上拉列表啊真心求指导...

    QTableView与QSqlTableModel显示mysql数据库中的数据,如何在QTableView的项中添加chekbox按钮与下拉列表啊?真心求指导. 各位大侠好,利用QTableView与 ...

  6. uni-app APP 中动态显示右上角按钮

    uni-app APP 中动态显示右上角按钮 方案1 需要配合pages.json 配置实现 // 在要显示按钮的配置右上角按钮配置,并把文字颜色设置为页面背景色 {"path": ...

  7. 名编辑电子杂志大师教程 | 如何在电子宣传册中添加视频按钮?

    名编辑电子杂志大师具有视频按钮功能,您可以够在您的电子宣传册任何一个页面中嵌入视频按钮来播放安全视频. 点击视频按钮之后,您的安全视频将会以弹窗的形式展示出来! 下面就给您介绍下如何在电子宣传册中添加 ...

  8. 安卓app中把数据存在数据库中如何查看(Sqlite安装)

    安卓app中把数据存在数据库中如何查看 可通过Sqlite查看(电脑中如未安装数据库,请按照下方步骤安装) 在data下方寻找你的应用包名 然后右键(导出的数据库文件) 导出即可(save as... ...

  9. Vux+Cordova打包的安卓App实现微信分享朋友和朋友圈

    知识储备 Cordova Plugin ShareSDK 插件 什么是Cordova Plugin ShareSDK Cordova Plugin ShareSDK封装了ShareSDK的androi ...

最新文章

  1. nginx主配置文件 在那找怎么打开
  2. LDO的最小输入输出压差和最小负载电流
  3. STM32 电机教程 21 - 基于ST MCLIB无感FOC 与 有感FOC 代码差异分析
  4. 荒野乱斗角色设计浅谈
  5. 【Demo】配置重试和超时策略
  6. 一个通用的makefile写法,自动推导文件的依赖关系
  7. IBM小型机没有显卡,用串口登录需要修改tty,加clocal参数
  8. 激光雷达厂商速腾聚创获3亿元融资,阿里菜鸟、上汽,北汽入股
  9. CSS之设置p段落中的文字与页面左侧缩进两个字符!...
  10. 在线ASCII流程图编辑器工具
  11. 技术干货|深入理解flannel
  12. ROS的学习(五)在工作空间中构建和使用catkin包
  13. Windows操作系统正版盗版知识简介
  14. 电视hdr测试软件,HDR是什么意思 如何打开电视机的HDR10模式
  15. vs2017更新出错:The entire Box execution exiting with result code: 0x0
  16. java程序员面试笔试宝典4.1基本概念
  17. S7-1200通过FB284控制V90时,反馈的实际速度换算方法
  18. 午睡起来发现了很精美的windows壁纸
  19. 硬核拆台!宏彦获水,一脸懵逼:百度李彦宏遭当众泼水,一开始肇事者就在全程直播!!
  20. js 获取手机型号和版本

热门文章

  1. 倒排索引(反向索引)
  2. 电商项目总结java_Vue 电商后台管理项目阶段性总结(推荐)
  3. 计算机中人民币的符号怎么打,人民币符号怎么打?Word中人民币符号怎么打?...
  4. 电脑进程ID(process id)
  5. Oracle实例与数据库的概念详细解释
  6. 百度云管家4.6.2 – 最后一个不限速的版本
  7. Android 重新编译资源文件(touch)
  8. [寻春记事》闲笔记事集]2011-2-3
  9. 免费升级到 iOS 17 Developer Beta:官方Apple Store升级方案与爱思助手方法比较
  10. ubuntu安装minisat_为LattePanda安装Lubuntu 20.04并优化内核(已更新)