【问题标题】:why it shows null on selecting a file from storage?为什么从存储中选择文件时显示为空?
【发布时间】:2018-04-26 12:36:46
【问题描述】:

我想在单击按钮时选择一个 pdf 文件,然后在单击另一个按钮时将该文件发送到 url。我的问题是选择pdf文件。我在 "onActivityResult()" 方法中得到空值。

我的代码是

SelectButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent intent = new Intent();
            intent.setType("application/pdf");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent, "Select Pdf"), PDF_REQ_CODE);

        }
    });

ActivityResult 方法是

 @Override
   public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == PDF_REQ_CODE && resultCode == RESULT_OK && data != null && data.getData() != null) {

            uri = data.getData();;
            SelectButton.setText("PDF is Selected");

        }

    }

但是当我尝试从 uri 获取文件路径时,我将 uri 设为 null 并得到空指针异常。

【问题讨论】:

  • 你在android manifest中添加了权限吗?
  • 增加读写存储权限
  • But I am getting uri as null 你得到的不是 Uri,而是 Intent。 Intent data。请重新表述你得到的内容。
  • and getting null pointer exception when trying to get file path from uri. 你不应该尝试从 uris 获取路径。当 uri 为空时,当然不会。但是那个代码在哪里?

标签: android file uri


【解决方案1】:

试试这个然后告诉我!

 Button button = (Button) x.findViewById(R.id.buttonStripText);
        button.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                intent.setType("file/*");
                startActivityForResult(intent,PICKFILE_RESULT_CODE);
}

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        switch(requestCode){
            case PICKFILE_RESULT_CODE:
                if(resultCode==RESULT_OK){
                   fileName = data.getData().getPath();
                }
                break;

        }
    }

【讨论】:

  • 打开选择文件是什么意思?
  • 我选择了文件,但我没有在“onActivityResult()”上得到它
  • 尝试显示一个字符串,看看它在哪里不起作用,URI
猜你喜欢
  • 2019-10-01
  • 2022-12-06
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
相关资源
最近更新 更多