Android系统“使用其他文件打开”列表中包含自己的app

这里只说自定义文件,假设自定义文件后缀是.abc。

第一步:AndroidManifest启动页配置

        <activity
            android:name="com.abc.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustPan">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter android:scheme="http">
                <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:scheme="content"/>
                <data android:scheme="http"/>
                <data android:scheme="https"/>
                <data android:pathPattern="/.*\\.abc" />
                <data android:pathPattern="/.*\\..*\\.abc" />
                <data android:pathPattern="/.*\\..*\\..*\\.abc" />
                <data android:pathPattern="/.*\\..*\\..*\\..*\\.abc" />
                <data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\.abc" />
                <data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\..*\\.abc" />
                <data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\..*\\..*\\.abc" />
                <data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.abc" />
                <data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.abc/>
                <data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.abc" />
            </intent-filter>
        </activity>

配置好这一步,在QQ或者微信或文件管理器打开.abc文件,选择“用其他应用打开”的时候列表就会出现你的app。

第二步:启动页获取文件路径。

Intent intent = getIntent();
String action = intent.getAction();
if (intent.ACTION_VIEW.equals(action)) {
    Uri uri = intent.getData();
    String path = Uri.decode(uri.getEncodedPath());
}

获取到文件路径就可以进行下一步处理了。