如何区分Uri结果和其他活动

时间:2015-04-15 17:53:48

标签: android uri android-5.0-lollipop

我的Activity中有一个onActivityResult方法。我得到了Bundle并通过比较字符串值来区分不同的行为("函数")

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        // if (requestCode == REQUEST_QUICKLIST) {
        if (resultCode == Activity.RESULT_OK) {
            Bundle extras = data.getExtras();

            if (extras != null) {

                String sFunction = extras.getString("function");

现在我想另外处理新的Lollipop功能Intent.ACTION_OPEN_DOCUMENT_TREE以显示一个树对话框,用户可以选择一个文件夹来保存内容。此操作也将由onActivityResult

处理
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
    if (resultCode == RESULT_OK) {
        Uri treeUri = resultData.getData();
        DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);

如何区分我的正常行为和树行动?

2 个答案:

答案 0 :(得分:1)

将请求代码与startActivityForResult(Intent intent, int requestCode);

一起使用

并在onActivityResult()

if (resultCode == Activity.RESULT_OK)之前检查requestCode

像,

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Check which request you're responding to .. it differentiate your Activity and Tree action
    if (requestCode == <YOUR_ACTIVITY_REQUEST_CODE>) {
        // Make sure the request was successful
        if (resultCode == RESULT_OK) {

            // Do something with the result
        }
    }
}

答案 1 :(得分:0)

  

如何区分我的正常行为和树行动?

startActivityForResult()来电中使用不同的请求代码。这些将作为onActivityResult()的第一个参数传递,您可以在onActivityResult()中使用逻辑来检查该请求代码并相应地进行分支。