【发布时间】:2014-09-05 12:44:59
【问题描述】:
我正在做一个安卓应用程序。目标如下。
目标:
如果用户想在他们的 android 移动设备的任何地方共享 pdf(或)图像文件形式,他们将在共享列表中选择我的应用程序。我想知道,用户是选择了 pdf 文件还是图像。为此,我使用了以下代码。
在 AndroidManifest.xml
中
<activity
android:name="com.share.FileActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.SEND" />
<data android:mimeType="application/pdf" />
<data android:mimeType="image/*" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
在FileActivity.java中,获取选中文件的URI
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent myintent = getIntent();
Bundle extras = myintent.getExtras();
String action = myintent.getAction();
if (Intent.ACTION_SEND.equals(action)) {
if (extras.containsKey(Intent.EXTRA_STREAM)) {
URI uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM);
.
.
}
}
}
问题:
如果我从文件资源管理器中打开 pdf,我会得到正确的 URI,即“file:///storage/emulated/0/Download/test.pdf”。这样我就可以识别为pdf或图像。
但如果我从 google drive 应用程序打开 pdf 文件,我会收到以下 URI“content://com.google.android.apps.docs.storage.legacy/enc%3Du4Ss-AYnclkKv- lfNmA3wY7YBbb_JxRfayDTvfQfHWokHkoy%0A”。所以我无法识别所选文件。
如何从上述 URI 中获取文件类型。帮我解决这个问题?
【问题讨论】:
-
不是答案和题外话,但我认为为不同类型声明不同的意图过滤器标签会更好。
-
ContentResolver.getType ...
标签: android file pdf mime-types intentfilter