2016-09-26 72 views
2

我想从手机上选择PDF文件按钮单击并在文本视图上显示其文件名。到现在我已经做了打开文件管理器,选择按钮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选定的文件名?

+0

得到所选文件的URI,并从它那里得到的文件名。 – SripadRaj

+0

可能使用'startActivityForResult'并实现'OnActivityResult'来处理返回的文件名。 –

回答

5

use startActivityForResult(intent,1212) at startActivity(intent);并做的foll0wing 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); 
} 
+0

谢谢!!!工作很好:) –

+0

@AbhilashHarsole很高兴!!!帮助你。快乐编码:) – Nikhil

1

添加在您的getPDFPath方法:

public String getPDFPath(Uri uri){ 

    final String id = DocumentsContract.getDocumentId(uri); 
    final Uri contentUri = ContentUris.withAppendedId(
        Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); 

    String[] projection = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = getContentResolver().query(contentUri, projection, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 

在你的情况,这个代码是专门针对DonwloadProvider文件,进一步落实检查Paul Burke answer。我个人使用他的aFileChooser library来避免这种问题。

希望这会有所帮助!

2

你可以做到以下几点:

@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; 
    } 

希望这将帮助你

+0

什么是'checkFormat'你没有把它... – DarckBlezzer

相关问题