Android 日常使用整理

news2024/11/23 0:36:18

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) { // 需要配置FileProvider
           intent.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);      
     
// 获取图片      
    @Override
    public 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.coloradmin.cn/o/2245647.html

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

相关文章

算法.图论-习题全集(Updating)

文章目录 本节设置的意义并查集篇并查集简介以及常见技巧并查集板子(洛谷)情侣牵手问题相似的字符串组岛屿数量(并查集做法)省份数量移除最多的同行或同列石头最大的人工岛找出知晓秘密的所有专家 建图及其拓扑排序篇链式前向星建图板子课程表 本节设置的意义 主要就是为了复习…

云原生之k8s服务管理

文章目录 服务管理Service服务原理ClusterIP服务 对外发布应用服务类型NodePort服务Ingress安装配置Ingress规则 Dashboard概述 认证和授权ServiceAccount用户概述创建ServiceAccount 权限管理角色与授权 服务管理 Service 服务原理 容器化带来的问题 自动调度&#xff1a;…

Atomic原子操作类详解

Atomic原子操作类介绍 在并发编程中很容易出现并发安全的问题&#xff0c;有一个很简单的例子就是多线程更新变量i1,比如多个线程执行i操作&#xff0c;就有可能获取不到正确的值&#xff0c;而这个问题&#xff0c;最常用的方法是通过Synchronized进行控制来达到线程安全的目…

随手记: vue监听路由

随手记&#xff1a;没空记详细 newVal,oldVal 可以查看到最新路由和上一条路由详细 watch: {$route: {handler(newVal,oldVal) {console.log(newVal, oldVal)if(oldVal.path /organization/serviceManagement/list) {if(this.cacheId ! newVal.query.id) {this.cacheId newV…

AndroidStudio与开发板调试时连接失败或APP闪退的解决方案,涉及SELINUX及获取Root权限

现象 用AndroidStudio打开工程代码,点击运行后,报错: 解决方案 具体原因是尝试运行 su(通常用于获取超级用户权限)时失败了,提示 “Permission denied” 通过 CONFIG_SECURITY_SELINUX 变量控制 SElinux 开启或关闭 在vim /rk3568_android_sdk/device/rockchip/rk…

深度学习之One Stage目标检测算法2

我们将对单次目标检测器&#xff08;包括SSD系列和YOLO系列等算法&#xff09;进行综述。我们将分析FPN以理解多尺度特征图如何提高准确率&#xff0c;特别是小目标的检测&#xff0c;其在单次检测器中的检测效果通常很差。然后我们将分析Focal loss和RetinaNet&#xff0c;看看…

Flutter通过 Coap发送组播

Flutter发送组播的流程 1.初始化 CoAP 客户端 需要初始化 CoAP 客户端并将其连接到组播地址和端口。您可以使用 CoAP 库提供的类来创建和配置客户端 final client CoapClient(Uri.parse(coap://224.0.1.1:5683), // 组播地址和端口 ); 2.创建 CoAP 请求 创建一个 CoAP 请…

使用Python3实现Gitee码云自动化发布

仓库信息 https://gitee.com/liumou_site/ip 实现代码 import osimport requests from loguru import loggerdef gitee(ver, message, prerelease: bool False):"""在 Gitee 上创建发布版本:param ver: 版本号:param message: 发布信息:param prerelease: 是…

【软考】系统架构设计师-2022年下半年上午综合知识真题及答案

​全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试 高级 系统架构设计师 2022 年 下半年 上午试卷 综合知识 试题一 云计算服务体系结构如下图所示&#xff0c;图中①、②、③分别与⊆SaaSPaaSIaas 相对应&#xff0c; 图中①、②、③应为( ) A.⊆应用层、…

5. Spring Cloud OpenFeign 声明式 WebService 客户端的超详细使用

5. Spring Cloud OpenFeign 声明式 WebService 客户端的超详细使用 文章目录 5. Spring Cloud OpenFeign 声明式 WebService 客户端的超详细使用前言1. OpenFeign 介绍1.1 Feign 和 OpenFeign 区别 2. OpenFeign 应用实例2.2 注意事项和细节 3. OpenFeign 内置的“日志配置” 操…

Centos 8, add repo

Centos repo前言 Centos 8更换在线阿里云创建一键更换repo 自动化脚本 华为Centos 源 , 阿里云Centos 源 华为epel 源 , 阿里云epel 源vim /centos8_repo.sh #!/bin/bash # -*- coding: utf-8 -*- # Author: make.han

指南: 如何在 MEV 项目中使用 Yul

这对我来说是一个反复出现的故事。我学习了一些 Solidity&#xff0c;发现了一个我想要研究的服务。代码看起来是这样的&#xff1a; Seaport Core: BasicOrderFulfiller.sol Solidity 代码在哪里&#xff1f;人们似乎不再使用普通的 Solidity 代码了 &#x1f972; 这种在智能…

web——upload-labs——第十一关——黑名单验证,双写绕过

还是查看源码&#xff0c; $file_name str_ireplace($deny_ext,"", $file_name); 该语句的作用是&#xff1a;从 $file_name 中去除所有出现在 $deny_ext 数组中的元素&#xff0c;替换为空字符串&#xff08;即删除这些元素&#xff09;。str_ireplace() 在处理时…

北京申请中级职称流程(2024年)

想找个完整详细点的申请流程资料真不容易&#xff0c;做个分享送给需要的人吧。 不清楚为什么说文章过度宣传&#xff0c;把链接和页面去掉了&#xff0c;网上自己找一下。 最好用windows自带的EDGE浏览器打开申请网站&#xff0c;只有在开始申请的时间内才可以进行网上申报&…

Visual Studio 圈复杂度评估

VisualStudio自带的有工具 之后就可以看到分析结果

MySQL UPDATE语句执行链路解析

文章目录 引言1. 总览&#xff1a;UPDATE语句的执行链路2. 客户端发起请求2.1 SQL请求的形成2.2 MySQL通信协议 3. 连接器模块3.1 连接管3.2 会话上下文 4. SQL解析器4.1 语法解析4.2 语法错误处理 5. 查询优化器5.1 查询优化的核心概念5.2 优化器生成执行计划的步骤5.3 优化器…

.net6.0(.net Core)读取 appsettings.json 配置文件

① 新项目中创建名为 appsettings.json 的 json文件&#xff0c;内容为&#xff1a; {//数据库连接字符串:"ConnectionString": {"DBconn": "server127.0.0.1;databasedb;uidsa;pwd123456;Timeout600;EncryptTrue;TrustServerCertificateTrue;"…

[CISCN 2019初赛]Love Math 详细题解

知识点: 数学函数转换字符串 GET传参外部赋值 eval()函数解析执行命令 PHP动态调用函数名 源码: <?php error_reporting(0); //听说你很喜欢数学,不知道你是否爱它胜过爱flag if(!isset($_GET[c])){show_source(__FILE__); }else{//例子 c20-1$content $_GET[c];if (…

湛江市社保卡申领指南:手机获取电子照片回执单号

在湛江市&#xff0c;社保卡的申领流程已经实现了数字化&#xff0c;为市民带来了极大的便利。特别是通过手机获取数码照片回执单号&#xff0c;这一环节更是简化了申领过程。今天&#xff0c;我们将详细介绍如何不去照相馆&#xff0c;利用手机来获取数码照片回执单号&#xf…

第27天 安全开发-PHP应用TP 框架路由访问对象操作内置过滤绕过核心漏洞

时间轴 演示案例 TP 框架-开发-配置架构&路由&MVC 模型 TP 框架-安全-不安全写法&版本过滤绕过 TP 框架-开发-配置架构&路由&MVC 模型 参考&#xff1a; https://www.kancloud.cn/manual/thinkphp5_1 1、配置架构-导入使用 去thinkphp官网可以看到&…