Android获取pdf文件';我的应用程序的路径

Android获取pdf文件';我的应用程序的路径,android,file,pdf,mime-types,intentfilter,Android,File,Pdf,Mime Types,Intentfilter,我正在做一个android应用程序。目标如下 目标: 如果用户希望在android移动设备的任何位置共享pdf(或)图像文件表单,他们将在共享列表中选择“我的应用”。我想知道,是用户选择了pdf文件还是图像。为此,我使用了以下代码 在AndroidManifest.xml中 问题: 如果我从文件资源管理器打开pdf,我会得到正确的URI“file:///storage/emulated/0/Download/test.pdf”。这样我就可以识别为pdf或图像 但是如果我从google drive

我正在做一个android应用程序。目标如下

目标:

如果用户希望在android移动设备的任何位置共享pdf(或)图像文件表单,他们将在共享列表中选择“我的应用”。我想知道,是用户选择了pdf文件还是图像。为此,我使用了以下代码

在AndroidManifest.xml中

问题:

如果我从文件资源管理器打开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_JXRFAYDTVFQFHWHOKHKOY%0A”。因此,我无法识别所选文件

如何从上面的URI获取文件类型。帮我解决这个问题

如何从上面的URI获取文件类型


正如塞尔文所说,打电话。通过在任何
上下文
上调用
getContentResolver()
,您可以获得
ContentResolver
,例如您的
活动

不是答案,也是离题,但我认为最好为不同类型声明不同的意图过滤器标记。ContentResolver.getType…感谢您的回复。我现在得到了文件类型。但是如何从URI获取文件路径?”content://com.google.android.apps.docs.storage.legacy/enc%3Du4Ss-AYnclkKv-lfNmA3wY7YBbb_JXRFAYDTVFQFHWHOWOKHOY%0A“@karthi:没有“文件路径”。在
ContentResolver
上使用
openInputStream()
读取内容。
<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>
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);
            .
            .
        }
    }
}