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. 微信网页授权 通过code获取openid 报错40163 code been used

    使用好好的微信功能,突然安卓无法正常使用了,苹果的正常. 安卓报错内容: 40163,code been used. 题外话:微信的东西,为何报英文错误呢,装什么13. 实测结果:安卓获取用户信息时 ...

  2. tesseract库

    1.简介 # -*-coding:utf8 -*- #图形验证码识别技术 ''' 阻碍我们爬虫的,有时候是在登录或者请求一些数据时候的图形验证码.因此这里我们讲解 一种能将图片翻译成文字的技术.将图片 ...

  3. Linux的top命令学习【转载】

    转自:https://blog.csdn.net/sanshiqiduer/article/details/1933625 1.top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的 ...

  4. python点点滴滴

    python点点滴滴 1 self 使用python编程实现邮箱登录时,遇到使用self的情况,在此做简要记录. 参考链接: https://sjolzy.cn/Why-should-self-Pyt ...

  5. MFC 对话框不显示,返回-1 原因

    DoModal失败原因 1.MFC 通常对话框不显示的原因有 1 父窗口HWND无效 2 在ONINITDIALOG里用了ENDDIALOG 3 无效的对话框资源ID 4 使用没有注册的的自定义控件 ...

  6. git删除和提交

    //删除git分支git branch -D BranchNamegit branch -r -D origin/BranchNamegit push origin -d BranchName//提交 ...

  7. MongoDB3.2新特性之文档验证

    官方参考: https://docs.mongodb.org/master/core/document-validation/ 文档验证是3.2的重要新特性,添加验证条件的情形无非两种,一是在创建集合 ...

  8. 迁移svn项目到git

    women用的gitlab 在gitlab新建项目,然后拉项目拉下来,然后你把项目(vue)全部选中,除开node_modeles  .svn  dist  .idea这些不选外,copy到这个拉下来 ...

  9. 框架的一些bug问题记录

    关于java后台生成的mis表,在添加的add页面和edit页面中无法显示,去控制台里面查看.会有些错误的信息,是由于,你的那些html的标签不正常.导致无法显示. 里面有一个高级搜索,可以对这个选择 ...

  10. Leetcode: The Maze III(Unsolved Lock Problem)

    There is a ball in a maze with empty spaces and walls. The ball can go through empty spaces by rolli ...