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(日期 ...
随机推荐
- lumen----------A facade root has not been set.
1.新拉下来的lumen源码,直接使用Log::info是不行的.汇报如下图错误 解决办法如下图,因为lumen需要设置一些开关
- linux下chromedriver的安装
很多时候,发现phantomjs被一些网站屏蔽导致我们无法达到想要的结果,一方面phantomjs也停止维护,这时候们可以使用chromedriver(谷歌)或者firefoxdriver(火狐)来代 ...
- Android -- 《 最美有物》好看的点赞效果
1,前天在鸿洋的公众号上看到一款不错的点赞效果,是仿最美有物的点赞,再加上自己最近学习状态很差,自己想着通过这个效果练手一下,果然,花了整整两天的时间,按照以前的效率的话一天就够了,哎,已经调整了一个 ...
- 使用StringEscapeUtils转义、反转义字符串
使用commmons-lang.jar中的字符串转义工具类org.apache.commons.lang.StringEscapeUtils转义.反转义字符串,支持CSV.HTML.JAVA.Java ...
- linux系统安装MongoDB
1.在官网https://www.mongodb.org/dl/linux/x86_64下载对应的安装压缩包,我用的是3.2.5,建议使用此版本,版本越高,可能会出现其它未知问题,比如需要glibc高 ...
- [NOIP赛前冲刺第一期]初赛基础知识归纳
关于计算机 1.CPU 中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心(Control Unit).它的功能 ...
- 2018-2019-2 20165335『网络对抗技术』Exp5:MSF基础应用
主动攻击的实践: ms17_010(成功) 浏览器攻击的实践:ms14_064(成功) 客户端攻击的实践:adobe reader PDF的攻击(成功) 运用辅助模块的实践:VNC弱口令破解/绕过(失 ...
- OO第一单元优化博客
OO第一单元优化博客 第一次作业: 合并同类项+提正系数项+优化系数指数0/1=满分 第二次作业: 初始想法 一开始是想以\(sin(x)\)和\(cos(x)\)的指数作为坐标,在图上画出来就可 ...
- ceph运维常用指令
一.集群 1.启动一个ceph 进程 启动mon进程 service ceph start mon.node1 启动msd进程 service ceph start mds.node1 启动osd进 ...
- java线程学习之wait方法
wait 等待方法是让线程进入等待队列,使用方法是 obj.wait(); 这样当前线程就会暂停运行,并且进入obj的等待队列中,称作“线程正在obj上等待”. 如果线程想执行 wait 方法,线程必 ...