Android 日常使用整理

Android 日常使用

    • 1.打开APP的权限设置页面
    • 2.打开设置页面的所有APP列表
    • 3.拨打电话
    • 4.本地安装apk
    • 5.打开系统照相机的方法
    • 5.打开系统相册
    • 6.图片一般处理
    • 6.view的一般处理
    • 7.文件的处理

1.打开APP的权限设置页面

Uri uri = Uri.parse("package:" + "包名");
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, uri);
startActivityForResult(intent, 100);

2.打开设置页面的所有APP列表

Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
startActivityForResult(intent, 100);

3.拨打电话

 Intent intent = new Intent(Intent.ACTION_CALL); //直接拨打电话Intent intent = new Intent(Intent.ACTION_DIAL);// 跳转到拨号界面Uri data = Uri.parse("tel:" + phoneNum);intent.setData(data);startActivity(intent);

4.本地安装apk

    Intent intent = new Intent(Intent.ACTION_VIEW);intent.addCategory(Intent.CATEGORY_DEFAULT);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Uri contentUri;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { // 需要配置FileProviderintent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);contentUri = FileProvider.getUriForFile(activity.getApplicationContext(), activity.getPackageName() + ".provider", apkFile);} else {contentUri = Uri.fromFile(apkFile);}intent.setDataAndType(contentUri, "application/vnd.android.package-archive");activity.startActivity(intent);

5.打开系统照相机的方法

需要配置FileProvider,读写权限,相机权限
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri imageUri = null;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {imageUri = Uri.fromFile(new File(path));
} else {intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);imageUri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", new File(path));}
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, requestcode);

5.打开系统相册

第一种方法:Intent intent = new Intent();intent.setType("image/*");intent.setAction(Intent.ACTION_OPEN_DOCUMENT);startActivityForResult(intent, 1);第二种方法:Intent intent = new Intent();intent.setType("image/*");intent.setAction(Intent.ACTION_GET_CONTENT);startActivityForResult(intent, 1);第三种方法:Intent intent = new Intent(Intent.ACTION_PICK);intent.setType("image/*");startActivityForResult(intent, 1);
第四种方法: Intent intent  = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);startActivityForResult(intent , 1);      // 获取图片      @Overridepublic void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if(data != null){Uri selectedImageUri = data.getData();imgageview.setImageURI(selectedImageUri);}}

6.图片一般处理

    /*** 图片质量压缩* @param maxFileSize : 图片最大值*/private static Bitmap  compressQuality(Bitmap bitmap, int maxFileSize) {if (bitmap == null) {return null;}String mSrcSize = bitmap.getByteCount() / 1024 + "kb";ByteArrayOutputStream bos = new ByteArrayOutputStream();int quality = 100;bitmap.compress(Bitmap.CompressFormat.JPEG, quality, bos);while (bos.toByteArray().length > maxFileSize) {bos.reset();bitmap.compress(Bitmap.CompressFormat.JPEG, quality, bos);if (quality > 5) {if (bos.toByteArray().length > (maxFileSize * 2)) {quality -= 10;} else {quality -= 5;}} else {break;}}byte[] bytes = bos.toByteArray();Bitmap bitmapCompress = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);return bitmapCompress ;}/*** 图片像素压缩*/public Bitmap compressImage(String imagePath) {Bitmap bitmap;// 先算出图片的高宽BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;BitmapFactory.decodeFile(imagePath, options);// 缩放到最高500像素int compress = 500int be = 1;if (options.outHeight > options.outWidth) {be = (int) (options.outHeight / (float) compress );} else {be = (int) (options.outWidth / (float) compress );}if (be <= 0)be = 1;options.inSampleSize = be;options.inJustDecodeBounds = false;bitmap = BitmapFactory.decodeFile(imagePath, options);return bitmap;}/*** 判断照片角度*/public static int getBitmapDegree(String path) {int degree = 0;ExifInterface exifInterface = null;try {exifInterface = new ExifInterface(path);} catch (IOException e) {e.printStackTrace();return degree;}int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);switch (orientation) {case ExifInterface.ORIENTATION_ROTATE_90:degree = 90;break;case ExifInterface.ORIENTATION_ROTATE_180:degree = 180;break;case ExifInterface.ORIENTATION_ROTATE_270:degree = 270;break;}return degree;}/*** 旋转照片* @param degress : 图片需要纠正角度*/public static Bitmap rotateBitmap(Bitmap bitmap, int degress) {if (bitmap != null) {Matrix m = new Matrix();m.postRotate(degress);bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),bitmap.getHeight(), m, true);return bitmap;}return bitmap;}

6.view的一般处理

     /*** 给view设置左边或右边图标** @param view    要设置的view TextView 和 EditText* @param resId   图标id* @param isRight*/public static void setViewDrawables(View view, int resId, boolean isRight) {Drawable drawable = view.getContext().getResources().getDrawable(resId);drawable.setBounds(0, 0, drawable.getMinimumWidth(),drawable.getMinimumHeight());if (view instanceof TextView) {if (isRight) {((TextView) view).setCompoundDrawables(null, null, drawable, null);} else {((TextView) view).setCompoundDrawables(drawable, null, null, null);}} else if (view instanceof EditText) {if (isRight) {((EditText) view).setCompoundDrawables(null, null, drawable, null);} else {((EditText) view).setCompoundDrawables(drawable, null, null, null);}}}

7.文件的处理

  • 文件创建
  // 创建文件:public static File createFile(String dir, String name) {try {File file = new File(dir , name);if (file.exists()) {return file;}file.createNewFile();return file;} catch (IOException e) {e.printStackTrace();return null;}}// 创建文件夹:public static File createDir(String dirName) {File dir = new File(dirName);if (dir.exists() || dir.mkdir() || dir.mkdirs()){return dir;}return null;}
  • 读文件
	//获取文件后缀名 public static String getFileSuffix(String filePath) {return filePath.substring(filePath.lastIndexOf("/") + 1);}/*** 读取一个文本文件的内容*/public static String readTextFile(File file) throws IOException {BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));StringBuffer sb = new StringBuffer();String line;if (bufferedReader != null) {while ((line = bufferedReader.readLine()) != null) {sb.append(line);}bufferedReader.close();}return sb.toString();}public static String formetFileSize(File file) {long fileS = file.length();DecimalFormat df = new DecimalFormat("#.00");String fileSizeString = "";String wrongSize = "0B";if (fileS == 0) {return wrongSize;}if (fileS < 1024) {fileSizeString = df.format((double) fileS) + "B";} else if (fileS < 1048576) {fileSizeString = df.format((double) fileS / 1024) + "KB";} else if (fileS < 1073741824) {fileSizeString = df.format((double) fileS / 1048576) + "MB";} else {fileSizeString = df.format((double) fileS / 1073741824) + "GB";}return fileSizeString;}
  • 写文件
    /*** 保存图片到本地* @param sdkPath  sdk的目录* @param fileName 文件名*/public static void saveBitmap(Bitmap bitmap, String sdkPath, String fileName) {try {File dirFile = new File(sdkPath);if (!dirFile.exists()) {dirFile.mkdirs();}File file = new File(sdkPath, fileName);FileOutputStream fos = new FileOutputStream(file);bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);fos.flush();fos.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/*** 保存文件*/public static boolean saveToFile(String sFile, String info) {boolean Result = false;File file = new File(sFile);   //创建sFile这个目录if(file.exists() && file.length() > 10){try {file.createNewFile();} catch (IOException e) {e.printStackTrace();}}FileOutputStream fos;  //创建创建字节输出流对象try {fos = new FileOutputStream(file);try {if (info != null && info.length() > 0)fos.write(info.getBytes(StandardCharsets.UTF_8));fos.close();Result = true;} catch (IOException e) {e.printStackTrace();}} catch (FileNotFoundException e) {e.printStackTrace();}return Result;}
  • 删除文件
// 删除单个文件public static boolean deleteFile(String filePath) {File file = new File(filePath);if (file.isFile() && file.exists()) {return file.delete();}return true;}/*** 删除目录(文件夹)以及目录下的文件** @param fileDir被删除目录的文件路径* @return 目录删除成功返回true,否则返回false*/public static boolean deleteDirectory(String fileDir) {//如果fileDir不以文件分隔符结尾,自动添加文件分隔符if (!fileDir.endsWith(File.separator)) {fileDir += File.separator;}File dirFile = new File(fileDir);//如果dir对应的文件不存在,或者不是一个目录,则退出if (!dirFile.exists() || !dirFile.isDirectory()) {return true;}boolean flag = true;//删除文件夹下的所有文件(包括子目录)File[] files = dirFile.listFiles();for (int i = 0; i < files.length; i++) {//删除子文件if (files[i].isFile()) {flag = deleteFile(files[i].getAbsolutePath());if (!flag) {break;}} else {//删除子目录flag = deleteDirectory(files[i].getAbsolutePath());if (!flag) {break;}}}if (!flag) {return false;}return dirFile.delete();}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣面试经典 150(下)

文章目录 二叉树的层次遍历82. 二叉树的右视图83. 二叉树的层平均值84. 二叉树的层序遍历85. 二叉树的锯齿形层序遍历 二叉搜索树86. 二叉搜索树的最小绝对差87. 二叉搜索树中第K 小的元素88. 验证二叉搜索树 图89. 岛屿数量90. 被围绕的区域91. 克隆图92. 除法求值93. 课程表9…

Web3的核心技术:区块链如何确保信息安全与共享

在互联网不断迭代的进程中&#xff0c;Web3被视为下一代互联网的核心发展方向&#xff0c;其目标是构建更加开放、安全、去中心化的数字生态。在这一过程中&#xff0c;区块链作为核心技术&#xff0c;为信息安全与共享提供了全新解决方案。本文将深入探讨区块链如何在Web3中实…

Leetcode 生命游戏

以下是上述Java代码的算法思想及其逻辑的中文解释&#xff1a; 算法思想 这段代码实现了LeetCode第289题“生命游戏”的解决方案。核心思想是&#xff1a; 利用原地修改的方式&#xff08;in-place&#xff09;存储下一状态的变化&#xff1a; 通过引入额外的状态值&#xff0…

JavaScript 中 arguments、类数组与数组的深入解析

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;什么是 arguments 对象2.1 arguments 的定义2.2 arguments 的特性2.3 使用场景 &#x1f4af;深入了解 arguments 的结构3.1 arguments 的内部结构arguments 的关键属性 3.2 类数组…

设计模式-创建型-抽象工厂模式

1.概念 工厂方法模式只能生产一个产品系列&#xff0c;抽象工厂可以生产多个产品系列 2.作用 多个具体产品组成一个产品族&#xff08;产品系列&#xff09;&#xff0c;一个具体工厂负责生产一个产品族 3.应用场景 系统所需产品间由依赖关系&#xff0c;可以划分为同一产…

结合第三方模块requests,文件IO、正则表达式,通过函数封装爬虫应用采集数据

#引用BeautifulSoup更方便提取html信息&#xff1b;requests模块&#xff0c;发生http请求&#xff1b;os模块&#xff0c;文件写入import requests from bs4 import BeautifulSoup import os#当使用requests库发送请求时&#xff0c;如果不设置User - Agent&#xff0c;默认的…

操作系统基础——针对实习面试

目录 操作系统基础什么是操作系统&#xff1f;简述其主要功能请举例几种不同类型的操作系统&#xff0c;并简要说明它们的特点 操作系统基础 什么是操作系统&#xff1f;简述其主要功能 一、操作系统的定义 操作系统&#xff08;Operating System&#xff0c;简称OS&#xff…

深度学习基础练习:代码复现transformer重难点

2024/11/10-2024/11/18: 主要对transformer一些比较难理解的点做了一些整理&#xff0c;希望对读者有所帮助。 前置知识&#xff1a; 深度学习基础练习&#xff1a;从pytorch API出发复现LSTM与LSTMP-CSDN博客 【神经网络】学习笔记十四——Seq2Seq模型-CSDN博客 【官方双语】一…

ESLint的简单使用(js,ts,vue)

一、ESLint介绍 1.为什么要用ESLint 统一团队编码规范&#xff08;命名&#xff0c;格式等&#xff09; 统一语法 减少git不必要的提交 减少低级错误 在编译时检查语法&#xff0c;而不是等js引擎运行时才检查 2.eslint用法 可以手动下载配置 可以通过vue脚手架创建项…

探索PDFMiner:Python中的PDF解析利器

文章目录 **探索PDFMiner&#xff1a;Python中的PDF解析利器**1. 背景介绍&#xff1a;为何选择PDFMiner&#xff1f;2. PDFMiner是什么&#xff1f;3. 如何安装PDFMiner&#xff1f;4. 简单库函数使用方法4.1 提取文本4.2 获取页面布局信息4.3 提取表格数据4.4 提取图像 5. 应…

徒手从零搭建一套ELK日志平台

徒手从零搭建一套ELK日志平台 日志分析的概述日志分析的作用主要收集工具集中式日志系统主要特点采集日志分类ELK概述初级版ELK终极版ELK高级版ELKELK收集日志的两种形式 搭建ELK平台Logstash工作原理Logstash核心概念环境准备安装部署docker添加镜像加速器安装部署Elasticsear…

02 —— Webpack 修改入口和出口

概念 | webpack 中文文档 | webpack中文文档 | webpack中文网 修改入口 webpack.config.js &#xff08;放在项目根目录下&#xff09; module.exports {//entry设置入口起点的文件路径entry: ./path/to/my/entry/file.js, }; 修改出口 webpack.config.js const path r…

23种设计模式-模板方法(Template Method)设计模式

文章目录 一.什么是模板方法模式&#xff1f;二.模板方法模式的特点三.模板方法模式的结构四.模板方法模式的应用场景五.模板方法模式的优缺点六.模板方法模式的C实现七.模板方法模式的JAVA实现八.代码解析九.总结 类图&#xff1a; 模板方法设计模式类图 一.什么是模板方法模…

MySQL45讲 第二十五讲 高可用性深度剖析:从主备原理到策略选择

文章目录 MySQL45讲 第二十五讲 高可用性深度剖析&#xff1a;从主备原理到策略选择一、MySQL 主备基础原理&#xff08;一&#xff09;主备关系与数据同步&#xff08;二&#xff09;主备切换流程 二、主备延迟分析&#xff08;一&#xff09;主备延迟的定义与计算&#xff08…

VuePress v2 快速搭建属于自己的个人博客网站

目录 为什么用VuePress&#xff1f; 一、前期准备 Node.js 使用主题快速开发 二、VuePress安装 三、个性化定制 修改配置信息 删除不需要的信息 博客上传 四、部署 使用github快速部署 初始化仓库 本地配置 配置github的ssh密钥 部署 为什么用VuePress&#xff…

PostgreSQL常用时间函数与时间计算提取示例说明

文章目录 常用函数与常量to_timestamp(字符串转时间戳、数字转时间戳)date与to_date(字符串转日期、时间戳转日期)interval(时间计算)基本操作与格式混合运算 to_char(各种时间转字符串)extract(提取时间字段&#xff0c;年月日时分秒&#xff0c;周、季度&#xff0c;第几周、…

SlickGrid点击/双击事件

分析 SlickGrid提供了点击事件方法grid.onClick和grid.onDblClick用于捕获用户对表格列的点击&#xff0c;捕获到点击事件之后&#xff0c;修改表格数据&#xff0c;然后使用grid.updateRow方法将修改后的数据更新到表格中。 展示 代码 创建grid&#xff08;HTML&#xff09;…

【Unity ShaderGraph实现流体效果之Node入门(二)】

Unity ShaderGraph实现流体效果之Node入门&#xff08;二&#xff09; 前言Shader Graph NodeStep NodeMultiply NodeRotate About AxisAddfresnel effectIs Front Face 前言 在&#xff08;一&#xff09;中讨论了一部分在制作流体效果时使用的Node&#xff0c;本章继续将剩余…

集合卡尔曼滤波(Ensemble Kalman Filter),用于二维滤波(模拟平面上的目标跟踪),MATLAB代码

集合卡尔曼滤波&#xff08;Ensemble Kalman Filter&#xff09; 文章目录 引言理论基础卡尔曼滤波集合卡尔曼滤波初始化预测步骤更新步骤卡尔曼增益更新集合 MATLAB 实现运行结果3. 应用领域结论 引言 集合卡尔曼滤波&#xff08;Ensemble Kalman Filter, EnKF&#xff09;是…

解决Docker环境变量的配置的通用方法

我们部署的很多服务都是以Docker容器的形式存在的。 在运行Docker容器前&#xff0c;除了设置网络、数据卷之外&#xff0c;还需要设置各种各样的环境变量。 有时候&#xff0c;由于容器版本的问题&#xff0c;一些文档没有及时更新&#xff0c;可能同时存在多个新旧版本的环…