尝试使用onActivityResult()对intent的getIntExtra(),在使用Chooser时总是为null?

时间:2017-02-03 12:11:26

标签: android csv android-intent onactivityresult

我想知道使用选配器是否意味着您无法向接收意图发送额外的自定义数据?

我像这样调用文件选择意图

public static void receiveFiles(final AppCompatActivity activity, int which) {
    Intent receiveIntent = new Intent(Intent.ACTION_GET_CONTENT);
    receiveIntent.setType("text/comma-separated-values");
    String[] mimetypes = {"text/csv", "text/comma-separated-values", "application/csv"};
    receiveIntent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
    receiveIntent.addCategory(Intent.CATEGORY_OPENABLE);
    receiveIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false);

    receiveIntent.putExtra(IMPORT_OPTION_WHICH, which); //this line
    activity.startActivityForResult(Intent.createChooser(receiveIntent, "Pick CSV"), REQUEST_IMPORT_CSV);
}

但是在用户选择文件之后在onActivityResult中:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        switch (requestCode) {
            case REQUEST_IMPORT_CSV:
                if (data != null) {
                    Uri uri = data.getData(); //is correct
                    int which = data.getIntExtra(IMPORT_OPTION_WHICH, -1); 
                    //but this always -1!
                }
                break;
        }
    }
}

如何才能正确提取我传递给意图的值?

0 个答案:

没有答案