Android 如何在不是MainActivity的活动中选择文件夹

Android 如何在不是MainActivity的活动中选择文件夹,android,Android,我在一个应用程序中有两个活动,MainActivity和SecondActivity 我想在SecondActivity中使用ACTION\u OPEN\u DOCUMENT\u TREEACTION来选择一个文件夹,但从未成功 本机文件夹选择器将结果返回到MainActivity,并且不会触发这两个活动的onActivityResult。只有在MainActivity中使用ACTION\u OPEN\u DOCUMENT\u TREEACTION,我的需求才会成功 下面的代码是我的示例 <

我在一个应用程序中有两个活动,MainActivity和SecondActivity

我想在SecondActivity中使用
ACTION\u OPEN\u DOCUMENT\u TREE
ACTION来选择一个文件夹,但从未成功

本机文件夹选择器将结果返回到MainActivity,并且不会触发这两个活动的onActivityResult。只有在MainActivity中使用
ACTION\u OPEN\u DOCUMENT\u TREE
ACTION,我的需求才会成功

下面的代码是我的示例

<-- Manifest.xml -->
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".SecondActivity"
        android:label="@string/title_activity_second"
        android:theme="@style/AppTheme.NoActionBar"></activity>
</application>

因此,我的问题是,如何将选择器的返回目标分配给SecondActivity而不是MainActivity?

根据,如果设置,则不会调用onActivityResult,这解释了为什么它随后返回到MainActivity。删除该标志将解决问题,但如果您打算保留该标志,则需要找到其他解决方法

如果设置,则新活动不会保留在历史堆栈中。一旦 用户离开它,活动就完成了。今年五月 也可以使用noHistory属性设置

如果已设置,则在当前活动启动时永远不会调用onActivityResult() 开始设置结果并完成的新活动


我误解了这面旗帜的含义。非常感谢你。
// MainActivity
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    setSupportActionBar(toolbar)

    fab.setOnClickListener { view ->
        val intent = Intent(this, SecondActivity::class.java)
        intent.flags += Intent.FLAG_ACTIVITY_NO_HISTORY
        startActivity(intent)
    }
}
// SecondActivity
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_second)
    setSupportActionBar(toolbar)

    fab.setOnClickListener { view ->
        val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)

        startActivityForResult(intent, SecondActivity.REQ_CODE)
    }
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data) // Never run to here

    if (requestCode == SecondActivity.REQ_CODE && resultCode == RESULT_OK) {
        val selectedFile = data?.data 
    }
}