当前位置: 首页 > news >正文

安卓Intent打开系统进程汇总

1:拨打电话
        val uri = Uri.parse("tel:10086")val intent = Intent(Intent.ACTION_DIAL,uri)startActivity(intent)
2:发送短信
        val smsUri = Uri.parse("smsto:10086")val intent1 = Intent(Intent.ACTION_SENDTO,smsUri)intent1.putExtra("sms_body","Hello")startActivity(intent1)
3:打开浏览器
        val webViewUri = Uri.parse("https://www.baidu.com")val intent2 = Intent(Intent.ACTION_VIEW,webViewUri)startActivity(intent2)
4:打开多媒体,播放音乐
//        /storage/emulated/0/Music/foo.mp3val  file = Environment.getExternalStoragePublicDirectory("Music/foo.mp3")Log.d(Companion.TAG,file.path)Log.d(Companion.TAG,file.name)val intent = Intent(Intent.ACTION_VIEW)val audio = FileProvider.getUriForFile(this, "$packageName.fileProvider",file)Log.d(Companion.TAG,audio.path.toString())intent.setDataAndType(audio,"audio/mp3")startActivity(intent)

高版本安卓无法直接获取file,需要使用ContentProvide建立临时文件路径

Caused by: android.os.FileUriExposedException: file:///storage/emulated/0/Music/foo.mp3 exposed beyond app through Intent.getData()

使用ContentProvide 建立临时文件路径的方法:

1:在Manifest.xml里声明provider

        <providerandroid:name="androidx.core.content.FileProvider"android:authorities="${application}.fileProvider"android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/provider_paths"/></provider>

2:res/xml 新建provider_paths.xml文件,内容如下

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android"><external-path path="." name="external_storage_root" />
</paths>

注意name的值

Caused by: java.lang.IllegalArgumentException: Failed to find configured root that contains

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android"><external-path path="." name="external_storage_root" /> <!-- 对应Environment.getExternalStorageDirectory() --><cache-path name="cache_files" path="."/> <!-- 对应应用程序内部存储区域的cache子目录中的文件Context.getCacheDir() --><external-files-path name="external_files" path="."/> <!-- 对应应用程序外部存储区根目录中的文件Context.getExternalFilesDir(null) --><external-cache-path name="external_cache_files" path="."/> <!-- 对应应用程序外部缓存区域根目录中的文件Context.getExternalCacheDir() --><files-path name="path_files" path="."/> <!-- 对应应用程序内部存储区域的子目录中的文件Context.getFilesDir() --><external-media-path name="external_media_path" path="."/><!-- 对应代表应用程序外部媒体区域根目录中的文件Context.getExternalMediaDirs() --><root-path path="." name="external_999_root" /> <!-- 对应SD卡 --></paths>

5:打开相机
        //打开相机val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)//务必传值,不然onActivityResult照片返回值data为nullintent.putExtra(MediaStore.EXTRA_OUTPUT,savePhoto())val launcherActivityInfo = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {if (it != null) {if (intent.clipData!=null) {for (i in 0 until intent.clipData!!.itemCount) {val uri = intent.clipData!!.getItemAt(i).uriLog.d(TAG, "multiple current Uri:$uri")}}}}launcherActivityInfo.launch(intent)private fun savePhoto():Uri{val outPath = Environment.getExternalStorageDirectory().absoluteFile.absolutePath+"/poo.jpg"val file = File(outPath)val audio = FileProvider.getUriForFile(this, "$packageName.fileProvider",file)Log.d(TAG,audio.path.toString())return audio}
6:获取相册并裁剪
//        获取相册并裁剪图片val intent = Intent(Intent.ACTION_GET_CONTENT)intent.type = "image/*"intent.putExtra("crop","true")intent.putExtra("aspectX",1)intent.putExtra("aspectY",2)intent.putExtra("outputX",20)intent.putExtra("outputY",40)intent.putExtra("output",savePhoto())intent.putExtra("outputFormat","JPEG")val launcher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {if (it != null) {if(it.data!=null){Log.d(TAG,it.data!!.data.toString())Glide.with(this).load(it.data!!.data).into(iamge)}}}launcher.launch(intent)
7:打开系统设置
        //进入系统设置页面val intent = Intent(android.provider.Settings.ACTION_SETTINGS)val launcher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){}launcher.launch(intent)
8:打开系统无线网络设置页面
        //打开系统无线网络设置页面val intent = Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS)val launcher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){}launcher.launch(intent)

http://www.lryc.cn/news/104380.html

相关文章:

  • python学习(廖雪峰的官方网站部分,自学笔记)
  • python题-检查该字符串的括号是否成对出现
  • 3ds Max建模教程:模拟布料拖拽撕裂和用剑撕裂两种效果
  • 数据可视化(4)散点图及面积图
  • Redis - 数据过期策略
  • 英文论文(sci)解读复现:基于YOLOv5的自然场景下苹果叶片病害实时检测
  • 【Liux下6818开发板(ARM)】实现简易相册
  • Kubernetes(K8s)从入门到精通系列之六:K8s的基本概念和术语之存储类
  • Spark-统一内存模型
  • 类的继承和super关键字的使用(JAVA)
  • BGP属性+选路规则
  • 类的实例化
  • 智能提词器有哪些?了解一下这款提词工具
  • oracle 19c rac环境配置firewalld
  • Flutter 之Bloc入门指南实现倒计时功能
  • 目标识别数据集互相转换——xml、txt、json数据格式互转
  • 211. 添加与搜索单词 - 数据结构设计---------------字典树
  • SQL Server通过指令备份数据库和恢复数据库
  • windows如何上架ios应用到app store
  • Hadoop学习日记-YARN组件
  • 汽车过户时,怎么选到理想的好车牌?
  • 力扣468 验证IP地址
  • 前端静态登录页面实现
  • 华为数通HCIA-网络参考模型(TCP/IP)
  • java快速生成数据库表文档(HTML、DOC、MD)
  • Dojo学习和常用知识
  • 媒体查询详解
  • 华为数通HCIP-IGMP(网络组管理协议)
  • 价格管控有哪些有效的方法
  • 【Docker】Docker相关基础命令