Android中如何使用代码打开各种类型的文件

Android中如何使用代码打开各种类型的文件,第1张

在安卓中打开音乐、视频、图片、文档文件是需要有读取SD卡权限的,如果是6.0以下的系统,则直接在清单文件中声明SD卡读取权限即可;如果是6.0或以上,则需要动态申请权限。

在7.0以下中打开文件时,通过intent调用系统安装得人软件打开文件就好了,但是在android7.0及以上的机子上这么做会报android.os.FileUriExposedException错误,

1)读取SD卡

2)动态申请权限

//设备API大于6.0时,主动申请权限(读取文件的权限)

public static  void requestPermission(Activity context) {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

        if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)

                != PackageManager.PERMISSION_GRANTED) {

            ActivityCompat.requestPermissions(context, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,

                    Manifest.permission.READ_EXTERNAL_STORAGE}, 0)

        }

    }

}

3)读取文件

intent = OpenFileUtil.openFile(filePath+"/"+FileName+"."+end)

使用OpenFileUtil这个。链接: https://www.jianshu.com/p/1414101858c1

为了兼容Android7.0,获取文件Uri需要使用到FileProvider。

1)首先是AndroidManifest文件里面注册FileProvider

    android:name="android.support.v4.content.FileProvider"

    android:authorities="${applicationId}.provider"

    android:exported="false"

    android:grantUriPermissions="true">

        android:name="android.support.FILE_PROVIDER_PATHS"

        android:resource="@xml/provider_paths" />//需要自己编写xml文件

2)provider_paths.xml文件的编写

    // .表示根目录

3)打开文档方式为

intent = new Intent(Intent.ACTION_VIEW)

intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)

File txtFile = new File(filePath+"/"+FileName+"."+end)

Uri contentUri = FileProvider.getUriForFile(MyApplication.getContext(), BuildConfig.APPLICATION_ID+".provider", txtFile)

intent.setDataAndType(contentUri, "application/vnd.android.package-archive")

grantUriPermission(context, contentUri, intent)

startActivity(intent)

4)grantUriPermission方法添加权限

private static void grantUriPermission (Context context, Uri fileUri, Intent intent) {

    List resInfoList = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)

    for (ResolveInfo resolveInfo : resInfoList) {

        String packageName = resolveInfo.activityInfo.packageName

        context.grantUriPermission(packageName, fileUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION)

    }

}

综合两种情况:

//判断是否是AndroidN以及更高的版本,Build.VERSION_CODES.N是Android 7.0

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {

    intent = new Intent(Intent.ACTION_VIEW)

    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)

    File txtFile = new File(filePath+"/"+FileName+"."+end)

    Uri contentUri = FileProvider.getUriForFile(MyApplication.getContext(), BuildConfig.APPLICATION_ID+".provider", txtFile)

    Log.i("文件地址:",contentUri.toString())

    intent.setDataAndType(contentUri, "application/vnd.android.package-archive")

    grantUriPermission(MyApplication.getContext(), contentUri, intent)

} else {

    //7.0以下的可以打开文件了

    intent = OpenFileUtil.openFile(filePath+"/"+FileName+"."+end)

}

MyApplication.getContext().startActivity(intent)

好的,我明白了。

打开新文本文档的代码是一种非常有用的技能,它可以帮助您快速创建文本文件。要打开新文本文档,您需要使用Windows *** 作系统的命令提示符(CMD)。首先,您需要打开CMD,可以通过搜索“CMD”或“命令提示符”来打开它。然后,您可以在CMD中输入“notepad”来打开新文本文档。您也可以使用“notepad filename.txt”来创建一个新的文本文件,其中filename.txt是文件的名称。

您也可以使用Windows资源管理器来打开新文本文档。首先,您需要打开Windows资源管理器,可以通过搜索“资源管理器”来打开它。然后,您可以在资源管理器中点击“文件”->“新建”->“文本文档”来打开新文本文档。您也可以在资源管理器中右键单击一个文件夹,然后点击“新建”->“文本文档”来创建新文本文档。

总之,打开新文本文档的代码是一种非常有用的技能,它可以帮助您快速创建文本文件。您可以使用Windows *** 作系统的命令提示符(CMD)或Windows资源管理器来打开新文本文档。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7992420.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存