来自 onActivityResult 的参数“意图数据”为空



我有一个活动 A 和一个片段 B。

在 A 中,我有这种方法:

private void installApp(String path){
    Intent i = new Intent(Intent.ACTION_VIEW);
    fileUri = Uri.fromFile(new File(path));
    i.setDataAndType(fileUri, "application/vnd.android.package-archive");
    i.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    B.startActivityForResult(i, 101); //B has been initialized elsewhere
}

后来在 B 中调用此覆盖:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
    try{
        super.onActivityResult(requestCode, resultCode, data);
        //Can't d stuff with data because it's Null.
    }
    }catch (Exception e){
    //Handles the exception
    }
}

我已经搜索了一段时间,但仍然无法弄清楚为什么数据为空。我错过了什么?!

谢谢。

在片段 B 中,你是在称呼startActivityForResult(new Intent(getActivity(), ActivityA.class), REQUEST_CODE)吗?(REQUEST_CODE是一个整数)

如果是这样,那么:

在活动 A 中,您不会为结果启动活动。您需要调用: finish();

在活动 A 中,而不是 startActivityForResult();

更新代码,使其如下所示:

private void installApp(String path){
    Intent i = new Intent(Intent.ACTION_VIEW);
    fileUri = Uri.fromFile(new File(path));
    i.setDataAndType(fileUri, "application/vnd.android.package-archive");
    i.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    setResult(RESULT_OK, i);
    finish();
}

ACTION_VIEW的文档有"输出:无",这意味着ACTION_VIEW实现不提供结果,因此将ACTION_VIEWstartActivityForResult()一起使用是没有意义的。

相关内容

  • 没有找到相关文章

最新更新