从文件浏览器获取意图后得到结果

时间:2015-12-27 22:54:37

标签: android android-intent

我的应用可以保存并加载自定义类型的文件,让我们说.foo。

我的清单告诉我们:

<activity
    android:name=".activity.LoadActivity"
    android:label="dummy">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="file" />
        <data android:host="*" />
        <data android:pathPattern=".*\\.foo" />
    </intent-filter>
</activity>

有了这个,我可以在浏览器尝试打开.foo文件时启动我的活动。

但是在我的活动中,onCreate()被调用,而不是onActivityResult(),我怎样才能获得被点击的文件的路径?

我已经搜索了很长时间的文档,无法解决这个问题。

2 个答案:

答案 0 :(得分:1)

  

如何获取被点击的文件的路径?

您只需从传入的Intent中检索它即可。请致电:

Intent intent = getIntent();
intent.getData().toString();

回答你的整个问题:

  

但是在我的活动中,onCreate()被调用,但是没有onActivityResult(),为什么?

您可以直接从method Javadoc找到答案:

  

活动退出[...]

时调用

这不是你的情况。仅在您启动的活动(从您的代码中)调用onActivityResult。在您描述您的活动的场景中,从另一个应用程序(浏览器)调用。

使用方法onActivityResult

启动的活动结束后,将调用

startActivityForResult

答案 1 :(得分:1)

  

如何获取导致我的活动的文件呢?

致电getIntent()中的onCreate()以获取用于开始您的活动的Intent。在那里,getData()将返回指向文件的Uri