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 自定义类型文件与程序关联的更多相关文章

  1. VSCode注册关联自定义类型文件

    打开你要注册的文件类型文件[本文中用 ".txt"到".lua"演示] 在VSCode窗口右下角有当前文件类型"Plain Text" 是可 ...

  2. Android 虚拟机Dalvik、Android各种java包功能、Android相关文件类型、应用程序结构分析、ADB

    Android虚拟机Dalvik Dalvik冲击 随着Google 的AndroidSDK 的发布,关于它的API 以及在移动电话领域所带来的预期影响这些方面的讨论不胜枚举.不过,其中的一个话题在J ...

  3. 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议

    [源码下载] 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议 作者:webabcd 介绍与众不同 windows ...

  4. 重新想象 Windows 8 Store Apps (33) - 关联启动: 使用外部程序打开一个文件或uri, 关联指定的文件类型或协议

    原文:重新想象 Windows 8 Store Apps (33) - 关联启动: 使用外部程序打开一个文件或uri, 关联指定的文件类型或协议 [源码下载] 重新想象 Windows 8 Store ...

  5. Android进阶AIDL使用自定义类型

    原文首发于微信公众号:jzman-blog,欢迎关注交流! 上篇文章中主要介绍从 AIDL 的使用方式以及 Android 开发中不同进程之间的通信,遗留的问题是如何在 AIDL 中使用自定义类型,具 ...

  6. 在文件夹中 的指定类型文件中 查找字符串(CodeBlocks+GCC编译,控制台程序,仅能在Windows上运行)

    说明: 程序使用 io.h 中的 _findfirst 和 _findnext 函数遍历文件夹,故而程序只能在 Windows 下使用. 程序遍历当前文件夹,对其中的文件夹执行递归遍历.同时检查遍历到 ...

  7. Android 自定义View及其在布局文件中的使用示例(三):结合Android 4.4.2_r1源码分析onMeasure过程

    转载请注明出处 http://www.cnblogs.com/crashmaker/p/3549365.html From crash_coder linguowu linguowu0622@gami ...

  8. Android 自定义View及其在布局文件中的使用示例(二)

    转载请注明出处 http://www.cnblogs.com/crashmaker/p/3530213.html From crash_coder linguowu linguowu0622@gami ...

  9. 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(日期 ...

随机推荐

  1. xtrabackup工具备份与恢复

    1.xtrabackup简介 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品.它能对 ...

  2. JS全选反选功能

    总选框:<input type="checkbox" class="all" name="all"> 子选框: <inpu ...

  3. 2018-2019-2 网络对抗技术 20165321 Exp3 免杀原理与实践

    1. 实践内容(4分) 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分),加壳工具(0.5分),使用shellco ...

  4. reduce函数

    python中的reduce   python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是 ...

  5. Ubuntu16.04重新安装MySQL数据库

    安装之前先检查mysql是否卸载干净 dpkg --list|grep mysql 如果没有卸载干净请看上篇文章将mysql卸载干净 Ubuntu16.04彻底卸载MySQL 开始安装 可以直接默认安 ...

  6. PHP多维数组替换某一元素的值

    数组结构如下所示: $arr = [ [ 'id' => 1, 'sub'=> [ [ 'value' => 11.2 ], [ 'value' => 34.5 ] ] ], ...

  7. 缺陷的背后---LIMIT M,N 分页查找

    一.问题发现篇 最近组内做了一次典型缺陷分享时,翻阅2018年的缺陷,找到了一个让我觉得“有料”的bug(别的同事测试发现的),先大致简单的描述下这个问题: 需要实现的功能:从一个DB库同步某一段时间 ...

  8. django的url反向解析

    目的:防止页面中url地址改变,其他与这个URL地址有关联的都要改,减少耦合度 使用:主要分为在html中和视图函数中的使用 HTML中的使用: 如果我们在项目的url文件中通过include导入了应 ...

  9. html5 css折叠导航栏

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  10. CentOS7运行报错kernel:NMI watchdog: BUG: soft lockup - CPU#0 stuck for 26s

    CentOS内核,对应的文件是/proc/sys/kernel/watchdog_thresh.CentOS内核和标准内核还有一个地方不一样,就是处理CPU占用时间过长的函数,CentOS下是watc ...