【发布时间】:2016-04-17 16:40:37
【问题描述】:
所以我设法让我的应用程序从文件管理器打开具有特定扩展名的文件,但是用户是否可以点击 Google Drive 中的文件并以相同的方式打开它? 我的意思是我知道这是可能的,其他应用程序会这样做,但这样做的步骤是什么?我对我的应用程序能够以任何方式操作 Google Drive 上的文件不感兴趣,只是让 Google Drive 像文件管理器那样将文件“发送”到我的应用程序。
这是我现在使用的意图过滤器,但它不适用于 Google Drive 中的文件:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<action android:name="com.google.android.apps.drive.DRIVE_OPEN" />
<data android:scheme="file" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.xz9" />
<data android:host="*" />
</intent-filter>
【问题讨论】:
-
尝试
content:方案,对于初学者。当您请求对.xz9文件执行某些操作时,您可能还会查看 Drive 应用程序中是否有任何特定的日志记录,这让您了解完整的Uri是什么,以查看文件扩展名是否为在那里。 -
驱动器在日志中的任何地方都没有提到。相反,它是 ActivityManager: START u0 {act=android.intent.action.VIEW cmp=com.google.android.apps.docs/.projector.ProjectorLaunchActivity (has extras)} from uid 10072 on display 0 不管这意味着什么。我不知道
content:方案是什么,Google 搜索返回的内容对于如此简单的操作来说看起来非常复杂。 -
这将启动 Google 文档应用的内部活动 (
ProjectorLaunchActivity)。奇怪的是,那里没有Uri,这是我所预料的。 “我不知道什么是内容:scheme”——这将是file:、http:、https:等的替代方案。它指的是content published by aContentProvider,这是未来everything will be moving 的位置. -
啊,是的,那个的东西。有时间我会研究内容提供程序教程,但我不知道为什么 Google 云端硬盘根本不会执行每个文件管理器在您点击文件时所做的事情。
-
作为we discussed previously,它可能正在使用 MIME 类型,如果它知道的话。您可以考虑为
VIEW、content:和*/*的MIME 类型临时添加<intent-filter>,然后查看Drive 是否识别您。如果是这样,你可以检查你得到的Intent,然后看看你是否能想出一个更受限制的<intent-filter>。
标签: android