如何将Android应用与具有特定扩展名的Google云端硬盘文件相关联?

时间:2014-06-17 08:51:33

标签: android google-drive-api intentfilter

我需要将文件与Google云端硬盘(例如.gpx)中的特定扩展程序相关联。因此,当我单击Drive上的.gpx文件时,我应该可以选择使用我的应用程序打开此文件。

目前我有一个活动处理这些文件,点击AndroidManifest.XML中以下面的方式声明,它适用于本地存储的文件和gmail附件,但不适用于Drive:

 <activity
            android:name=".ui.PhotosActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop"
            >

            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>

            <intent-filter
                android:icon="@drawable/ic_launcher"
                android:label="@string/app_name"
                android:priority="1">
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>

                <data android:scheme="http"/>
                <data android:scheme="https"/>
                <data android:scheme="ftp"/>
                <data android:scheme="file"/>
                <data android:host="*"/>
                <data android:mimeType="*/*"/>
                <data android:pathPattern=".*\\.gpx"/>
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>

                <action android:name="com.google.android.apps.drive.DRIVE_OPEN" />

                <category android:name="android.intent.category.BROWSABLE"/>
                <category android:name="android.intent.category.DEFAULT"/>

                <data
                    android:mimeType="application/octet-stream"
                    android:pathPattern=".*\\.gpx"
                    android:scheme="file"/>
                <data
                    android:mimeType="application/octet-stream"
                    android:pathPattern=".*\\.gpx"
                    android:scheme="content"/>
            </intent-filter>
        </activity>

1 个答案:

答案 0 :(得分:1)

将此添加到您的清单:

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />

然后将其添加到您的活动中:

<meta-data
            android:name="com.google.android.apps.drive.APP_ID"
            android:value="id=xxxxxxx" />

其中xxxxxxx是您使用Google API控制台声明的项目ID。

<intent-filter>
            <action android:name="com.google.android.apps.drive.DRIVE_OPEN" />

            <data android:mimeType="application/vnd.google-apps.drive-sdk.1234567890" />
            <data android:mimeType="*/*" />
            <data android:pathPattern=".*\\.gpx" />
         </intent-filter>