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(日期 ...
随机推荐
- charles-抓包Andriod 手机的设置
长按弹出 修改后: charles如果不配置SSL通用证书: 会导致HPPTS协议的域名抓取失败/乱码的现象: 现在SSL越来越多,很多博客都上了SSL,支付相关的行业更是基础配置: charles配 ...
- Java中数组的几个常用算法:插入算法,删除算法,冒泡排序算法
前言: 在Java中我们常常会用数组,提到数组就不得不介绍数组中常用到的几个算法. 有插入算法,删除算法,冒泡排序算法等. 在学习这几个数组的算法前,我们先来了解一下关于数组一些基本知识. 数组的基本 ...
- OO第一单元总结(表达式求导)
写在前边:第一次接触面向对象语言,编程思想仍然不可避免的有以前面向过程的影子.从第一次作业的完全面向过程,到第二次学会剥离各个类互不影响到第三次作业的先构思面向对象的基本程序架构再编程.虽然程序有些地 ...
- 深入理解MVC原理
SpringMVC的工作原理图: SpringMVC流程 1. 用户发送请求至前端控制器DispatcherServlet. 2. DispatcherServlet收到请求调用HandlerMa ...
- 【Python学习】iterator 迭代器小练习
http://anandology.com/python-practice-book/iterators.html Problem 1: Write an iterator class revers ...
- c#中可变参数params关键字学习
引用 https://www.cnblogs.com/maowp/p/8134342.html 基础知识 1.概念 params 是C#开发语言中关键字, params主要的用处是在给函数传参数的时候 ...
- Python实现图像边缘检测算法
title: "Python实现图像边缘检测算法" date: 2018-06-12T17:06:53+08:00 tags: ["图形学"] categori ...
- week1 - Python基础1 介绍、基本语法、流程控制
知识内容: 1.python介绍 2.变量及输入输出 3.分支结构 4.循环结构 一.python介绍 Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发 ...
- Angular4 websocket通讯
- ARM Mcp2515添加驱动
Mcp2515添加驱动 2012-01-10 21:39:32 上图1: 上图2: 上图3: 之前完成了spi接口驱动,所以mcp2515也是通过spi来读写数据的.就是多加一个中断脚. 另外在2 ...