在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)
1、下载了GitHub上面的一个路由分发的项目?
2、然后我在AndroidStudio里面新建了一个可运行的项目:Test
3、app/build.gradle配置如下(新建自动生成的,没做任何改动):
4、project/build.gradle配置如下(自动生成,未做任何改动)
5、这个时候解压下载的qiaoba.zip
6、打开qiaoba项目的app/build.gradle,然后把相关配置替换为本地可运行项目Test的app/build的相关配置,这样AndroidStudio不用下载太多资源..
7、然后,注意保存起来..
然后打开gradle/wrapper文件夹下的gradle-wrapper.properties文件,像这类的东西最好时不要用txt文本打开,弄个相关的编辑器比较好..最后还要把project的build.gradle版本改一下
8、差不多的配置都改完了,做到这一步之后用AndroidStudio-file-open打开。当然还是会下载一些别的引用资源,相对来说少了很多东西了,一般都可以打开,编译运行..
打开之后会提示当前版本较低,升级一下就好了
扩展资料:
Android Studio 是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。
Android Studio是谷歌推出了新的Android开发环境,开发者可以在编写程序的同时看到自己的应用在不同尺寸屏幕中的样子。
谷歌对开发者控制台进行了改进,增加了五个新的功能,包括优化小贴士、应用翻译服务、推荐跟踪、营收曲线图、用版测试和阶段性展示。
1、优化小贴士:在主体中打开你的应用,点击小贴士,会得到这样的建议:为你的应用开发平板电脑版本。
2、应用翻译服务:允许开发者直接在开发主体中获得专业的翻译。上传你的需求,选择翻译,其会显示翻译方和价格,并在一周内发回译本。
3、推荐跟踪:允许开发者找出最有效的广告
4、营收曲线图:向开发者展示其应用营收,以国家进行划分
5、试用版测试和阶段性展示:开发者可以对应用进行测试,然后向测试用户推出,测试结果不会对外公布。当一个版本的测试结束,开发者可以向特定比例用户推出。
参考链接:百度百科—Android Studio
如何正确打开一个存在的工程
安卓手机打开.M文件方法:在应用商店搜索uc浏览器并安装,打开uc浏览器,点击下方的菜单按钮,然后点击下载/视频,接下来点击文件,点击右下角的储存卡,接下来在其中找到你想要打开的文件就可以打开了。
安卓手机是美国谷歌公司开发的移动 *** 作系统,一般指Android。安卓是一种基于Linux内核的自由及开放源代码的 *** 作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。Android *** 作系统最初由Andy Rubin开发,主要支持手机。安卓手机打开.M文件方法:安装uc浏览器,打开并点击菜单,然后点击下载/视频,接下来点击文件,点击右下角的储存卡,选择文件打开。
Android开发四大组件分别是:活动: 用于表现功能。服务: 后台运行服务,不提供界面呈现。广播接收器:用于接收广播。内容提供商: 支持在多个应用中存储和读取数据,相当于数据库。Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。
Android开发四大组件分别是:活动:用于表现功能。服务:后台运行服务,不提供界面呈现。广播接收器:用于接收广播。内容提供商: 支持在多个应用中存储和读取数据,相当于数据库。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)