#android #google-drive-api #intentfilter
#Android #google-drive-api #intentfilter
Вопрос:
Мне нужно связать файлы с определенным расширением с Google Диска (например, .gpx) с моим приложением. Поэтому, когда я нажимаю на файл .gpx на диске, у меня должна быть возможность открыть этот файл с помощью моего приложения.
В настоящее время у меня есть действие, обрабатывающее эти файлы, щелкающие, объявленные в AndroidManifest.XML как показано ниже, и это работает для локально сохраненных файлов и вложений gmail, но не для диска:
<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:
Добавьте это в свой манифест:
<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.
<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>