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

时间:2014-07-15 10:48:04

标签: android file pdf mime-types intentfilter

我正在做一个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中获取文件类型。帮我解决这个问题?

1 个答案:

答案 0 :(得分:2)

  

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

正如塞尔文所说,请致电getType() on a ContentResolver()。您可以通过ContentResolvergetContentResolver()Context获取Activity,例如您的{{1}}。