Android 自定义类型文件与程序关联
0x01 功能
实现在其他应用中打开某个后缀名的文件 可以直接跳转到本应用中的某个activity进行处理
0x01 实现
首先创建一个activity ,然后在manifest里对该activity项编辑,加入
<intent-filter >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file"/>
<data android:host="*" />
<data android:pathPattern=".*\\.file" />
</intent-filter>
这里定义的是以.file为后缀的文件,需要对自己需要的后缀名进行修改,其中pathPattern可以设置为多个,用于应对各种情况,
完善后如下
<activity android:name=".UpdateFwActivity"
android:screenOrientation="portrait"
android:label="固件升级"
>
<intent-filter>
<action
android:name="android.intent.action.VIEW" />
<category
android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
<data android:host="*" />
<data android:scheme="file" />
<data android:pathPattern="/.*\.fw" />
<data android:pathPattern="/.*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\..*\..*\.fw" />
<data android:pathPattern="/.*\.ft" />
<data android:pathPattern="/.*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\..*\..*\.ft" />
<data android:pathPattern="/.*\.res" />
<data
android:pathPattern="/.*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\..*\..*\.res" />
</intent-filter>
<intent-filter>
<action
android:name="android.intent.action.VIEW" />
<category
android:name="android.intent.category.DEFAULT" />
<data android:host="*" />
<data android:scheme="file" />
<data android:pathPattern="/.*\.fw" />
<data android:pathPattern="/.*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\..*\.fw" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\..*\..*\.fw" />
<data android:pathPattern="/.*\.ft" />
<data android:pathPattern="/.*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\..*\.ft" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\..*\..*\.ft" />
<data android:pathPattern="/.*\.res" />
<data
android:pathPattern="/.*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\..*\.res" />
<data
android:pathPattern="/.*\..*\..*\..*\..*\..*\..*\..*\..*\..*\.res" />
</intent-filter>
<intent-filter>
<action
android:name="android.intent.action.VIEW" />
<category
android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/octet-stream" />
</intent-filter>
<intent-filter>
<action
android:name="android.intent.action.VIEW" />
<category
android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="application/zip" />
<data
android:mimeType="application/x-zip-compressed" />
</intent-filter>
<intent-filter>
<action
android:name="android.intent.action.SEND" />
<category
android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter> </activity>
可以直接从intent中拿到文件的路径
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update_fw);
super.setTitle("res/fw 安装器"); Intent v3=this.getIntent();
String v1 = v3.getDataString();
Toast.makeText(UpdateFwActivity.this,v1,Toast.LENGTH_LONG).show(); }
0x03 效果
参考:
https://github.com/Freeyourgadget/Gadgetbridge/blob/master/app/src/main/AndroidManifest.xml
Android 自定义类型文件与程序关联的更多相关文章
- VSCode注册关联自定义类型文件
打开你要注册的文件类型文件[本文中用 ".txt"到".lua"演示] 在VSCode窗口右下角有当前文件类型"Plain Text" 是可 ...
- Android 虚拟机Dalvik、Android各种java包功能、Android相关文件类型、应用程序结构分析、ADB
Android虚拟机Dalvik Dalvik冲击 随着Google 的AndroidSDK 的发布,关于它的API 以及在移动电话领域所带来的预期影响这些方面的讨论不胜枚举.不过,其中的一个话题在J ...
- 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议
[源码下载] 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议 作者:webabcd 介绍与众不同 windows ...
- 重新想象 Windows 8 Store Apps (33) - 关联启动: 使用外部程序打开一个文件或uri, 关联指定的文件类型或协议
原文:重新想象 Windows 8 Store Apps (33) - 关联启动: 使用外部程序打开一个文件或uri, 关联指定的文件类型或协议 [源码下载] 重新想象 Windows 8 Store ...
- Android进阶AIDL使用自定义类型
原文首发于微信公众号:jzman-blog,欢迎关注交流! 上篇文章中主要介绍从 AIDL 的使用方式以及 Android 开发中不同进程之间的通信,遗留的问题是如何在 AIDL 中使用自定义类型,具 ...
- 在文件夹中 的指定类型文件中 查找字符串(CodeBlocks+GCC编译,控制台程序,仅能在Windows上运行)
说明: 程序使用 io.h 中的 _findfirst 和 _findnext 函数遍历文件夹,故而程序只能在 Windows 下使用. 程序遍历当前文件夹,对其中的文件夹执行递归遍历.同时检查遍历到 ...
- Android 自定义View及其在布局文件中的使用示例(三):结合Android 4.4.2_r1源码分析onMeasure过程
转载请注明出处 http://www.cnblogs.com/crashmaker/p/3549365.html From crash_coder linguowu linguowu0622@gami ...
- Android 自定义View及其在布局文件中的使用示例(二)
转载请注明出处 http://www.cnblogs.com/crashmaker/p/3530213.html From crash_coder linguowu linguowu0622@gami ...
- 1.4.2 solr字段类型--(1.4.2.6)使用外部文件和程序
1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...
随机推荐
- Golang 之协程详解
转自:https://www.cnblogs.com/liang1101/p/7285955.html 一.Golang 线程和协程的区别 备注:需要区分进程.线程(内核级线程).协程(用户级线程)三 ...
- 基于Spark自动扩展scikit-learn (spark-sklearn)(转载)
转载自:https://blog.csdn.net/sunbow0/article/details/50848719 1.基于Spark自动扩展scikit-learn(spark-sklearn)1 ...
- win10家庭版删除文件提示没有权限最简单的方式
1.cmd 2.右键-以管理员身份运行(重要) 3.输入:net user administrator /active:yes,开启超级管理员账号 4.win+r键打开运行对话框,输入 netplwi ...
- windows下安装php reids扩展
1.使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本. 2.下载php_igbinary-1.2.1-5.5-ts-vc11-x64.zip,php_redis-2.2.5-5.6 ...
- visual studio 中被遗忘的任务列表和书签
任务列表(Task List)是VS中被人遗忘的一个功能,用到跳转到不同的代码段非常不便.以后就不用每次前进和后退导航了. 使用“任务列表” 跟踪使用 TODO 和 HACK或自定义令牌等令牌的代码注 ...
- 关于asp.net中链接数据库的问题
学习了asp.net 有web服务器控件和C#代码两部分 那么在做页面时候,需要用到数据库和asp.net的链接 课本上只是说明了和SQL server的链接,本文介绍如何在.net中链接 Acces ...
- kali,parrot最新更新debain源
deb http://mirrors.163.com/debian/ jessie main non-free contribdeb http://mirrors.163.com/debian/ je ...
- PHP----------线程安全和非线程安全的介绍
1.Linux下的PHP,没有线程安全版和非线程安全版之分.从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,直至5.2.1版本开始有Thread Sa ...
- 下载caffe慢
国内在github上下载软件慢,应在gitee下载git clone https://gitee.com/cuibixuan/caffe.git
- supervisor 从安装到使用
(转)https://www.jianshu.com/p/3658c963d28b 一.安装 源码安装 先下载最新的supervisor安装包:https://pypi.python.org/pypi ...