安卓Intent打开系统进程汇总

这篇具有很好参考价值的文章主要介绍了安卓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.mp3
        val  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

        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${application}.fileProvider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android: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文章来源地址https://www.toymoban.com/news/detail-620899.html

<?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为null
        intent.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).uri
                        Log.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)

到了这里,关于安卓Intent打开系统进程汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android将Uri转为路径字符串(适配安卓全版本)并使用第三方应用打开文件(适配Android7.0+)

    做这个功能时在网上找了无数篇例子,有些方法是有问题的,故自己写一篇完整实现的总结,作备忘也作案例。顺便说一句,Android对存储权限的给予真的越来越严格 目录 1.Uri转为路径String以获得文件名  2.获取文件后缀名 3.通过后缀名获取文件MIME类型  4.设置Intent的Uri与权限

    2024年02月19日
    浏览(41)
  • Android页面跳转(Intent)

    布局 代码 隐式意图 没有明确指定组件名的Intent为隐式意图,系统会根据隐式意图中设置的动作(action)、类别(category)、数据UIL等来匹配最合适的组件。 首先在清单文件中使用意图过滤器设置活动的名字 action android:name=“HomeActivity” / category android:name=“android.intent.categ

    2023年04月09日
    浏览(36)
  • android使用相机 intent.resolveActivity returns null

    笔者使用java进行android开发,启动相机时 intent.resolveActivity returns null 笔者使用如下代码启动相机 控制台报错: 步骤1、 在packageappsrcmainAndroidManifest.xml中配置如下内容: 具体操作如下图所示: 具体代码: 问题产生的原因是在Android 11及更高版本中,由于引入了更严格的权限

    2024年01月21日
    浏览(46)
  • Android 屏幕唤醒 + 屏幕解锁 + 开机广播android.intent.action.BOOT_COMPLETED

    Android API Level8以上的时候,程序可以安装在SD卡上。如果程序安装在SD卡上,那么在BOOT_COMPLETED广播发送之后,SD卡才会挂载,因此程序无法监听到该广播。 清单文件 目录下添加: android:installLocation=“internalOnly” android:installLocatio n的属性有\\\" auto \\\"、“ internalOnly ”、“ preferE

    2023年04月16日
    浏览(38)
  • 无涯教程-Android Intent Standard Extra Data函数

    下表列出了各种重要的Android Intent Standard Extra Data。您可以查看Android官方文档以获取额外数据的完整列表- Sr.No Extra Data Description 1 EXTRA_ALARM_COUNT 用作AlarmManager intents(意图)中的int Extra字段,以告诉正在调用的应用程序intents(意图)释放了多少未决警报。 2 EXTRA_ALLOW_MULTIPLE 用于指示

    2024年02月10日
    浏览(52)
  • Android 13 针对 Intent filters 安全的再加强

    作者:李龙、TechMerger 君 在看这个变更之前,我们需要回忆下 Android 12 的一个安全性变更, 即声明了 intent-filter 的Activity、BroadcastReceiver、Service 必须声明 android:exported , 否则将会无法被启动。 Android 12 的这个变更是为了防止开发者在不知情的情况下,声明了一个 intent-filte

    2024年02月07日
    浏览(34)
  • Android Activity启动流程一:从Intent到Activity创建

    关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 学习前,建议有相关知识储备: 【Android 基础】 应用(Application)启动流程 通过本文你可以学习到Activity启动流

    2024年02月10日
    浏览(44)
  • 安卓进阶之android系统架构

    安卓进阶躲不开阅读源码和深入了解安卓的底层,这是一篇入门级别的文章,可以对安卓架构有个大体的认识。 首先要理解andriod和AOSP的关系,我们日常开发的安卓跟市面上的安卓不是一个意思,我们开发的是安卓app,市面上的安卓其实是安卓系统。 维基百科: Android 是基于

    2023年04月12日
    浏览(41)
  • Android开发-Activity中“android:exported“属性的作用,以及“Permission Denial: starting Intent“错误解决

    如何在一个应用程序中,启动另外一个应用程序?最近正有这样的需求,也踩了一个小坑。本节介绍使用Activity中\\\"android:exported\\\"属性来实现这种访问。 Activity中\\\"android:exported\\\"属性说明: 在程序清单AndroidMenifest.xml文件中,可以设置这个属性。 Android中的Activity中\\\"android:exported\\\"属

    2024年02月06日
    浏览(48)
  • Android Studio:Intent与组件通信实现页面跳转功能

    📌Android Studio 专栏正在持续更新中,案例的原理图解析、各种模块分析💖这里都有哦,同时也欢迎大家订阅专栏,获取更多详细信息哦✊✊✊ ✨个人主页:零小唬的博客主页 🥂欢迎大家 👍点赞 📨评论 🔔收藏 ✨作者简介:20级计算机专业学生一枚,来自宁夏,可能会去

    2024年02月05日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包