Android 自定義型別檔案與程式關聯
阿新 • • 發佈:2018-11-26
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