单击按钮从手机中选择 pdf 文件并在 textview 上显示其文件名

新手上路,请多包涵

我想在单击按钮时从电话中选择 pdf 文件,并在文本视图中显示其文件名。到目前为止,我已经完成了打开文件管理器以在单击按钮时选择 pdf

 btnUpload.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_GET_CONTENT);
            intent.setType("application/pdf");
            startActivity(intent);
        }
    });

如何在 textview 上获取选定的文件名?

原文由 Abhilash Harsole 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 501
2 个回答

在 startActivity(intent) 的位置使用 startActivityForResult(intent, 1212 ); 并在 onActivityResult 中执行后续操作

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
    case 1212:
        if (resultCode == RESULT_OK) {
            // Get the Uri of the selected file
            Uri uri = data.getData();
            String uriString = uri.toString();
            File myFile = new File(uriString);
            String path = myFile.getAbsolutePath();
            String displayName = null;

            if (uriString.startsWith("content://")) {
                Cursor cursor = null;
                try {
                    cursor = getActivity().getContentResolver().query(uri, null, null, null, null);
                    if (cursor != null && cursor.moveToFirst()) {
                        displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
                    }
                } finally {
                    cursor.close();
                }
            } else if (uriString.startsWith("file://")) {
                displayName = myFile.getName();
            }
        }
        break;
    }
    super.onActivityResult(requestCode, resultCode, data);
}

原文由 Nikhil 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以执行以下操作:

 @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    String fileName = getFileName(this, data.getData());

    yourTextView.setText(fileName);
}

public String getFileName(Context context, Uri uri) {
    if (uri != null && context != null) {
      Cursor returnCursor =
          context.getContentResolver().query(uri, null, null, null, null);
      if(returnCursor != null) {
        int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
        int sizeIndex = returnCursor.getColumnIndex(OpenableColumns.SIZE);
        returnCursor.moveToFirst();
        if(nameIndex >= 0 && sizeIndex >= 0){
          Log.d("File Name : " + returnCursor.getString(nameIndex));
          Log.d("File Size : " + Long.toString(returnCursor.getLong(sizeIndex)));
          Boolean isValidFile = checkFormat(returnCursor.getString(nameIndex));

          if(!isValidFile){
            return returnCursor.getString(nameIndex);
          }
  }

private Boolean checkOtherFileType(String filePath){
    if(!Utility.isNullOrEmpty(filePath)) {
      String filePathInLowerCase = filePath.toLowerCase();
      if(filePathInLowerCase.endsWith(".pdf")) {
        return true;
      }
    }
    return false;
  }

希望这会帮助你

原文由 Sibaditya Maiti 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题