我正在做一个Android应用程序。目标如下:
目的:
如果用户想要在他们的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作为&#34; file:///storage/emulated/0/Download/test.pdf &#34;。这样我就可以识别为pdf或图像。
但如果我从google云端硬盘应用中打开pdf文件,我会收到以下URI&#34; 内容://com.google.android.apps.docs.storage.legacy/enc%3Du4Ss -AYnclkKv-lfNmA3wY7YBbb_JxRfayDTvfQfHWokHkoy%0A &#34 ;.所以我无法识别所选文件。
如何从上面的URI中获取文件类型。帮我解决这个问题?
答案 0 :(得分:2)
如何从上面的URI中获取文件类型
正如塞尔文所说,请致电getType()
on a ContentResolver()
。您可以通过ContentResolver
致getContentResolver()
来Context
获取Activity
,例如您的{{1}}。