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