2016-09-26 9 views
2

ボタンをクリックして電話からpdfファイルを選択し、そのファイル名をテキスト表示で表示します。今まで私はtextviewで選択したファイル名を得るのですかボタンを押して電話から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); 
     } 
    }); 

をクリックし、ボタンの上にPDFを選択するために開くファイルマネージャーを行っています?

+0

あなたを助けます。 – SripadRaj

+0

おそらく 'startActivityForResult'を使用し、返されたファイル名を処理するために' OnActivityResult'を実装します。 –

答えて

5

使用startActivityForResult(インテント、1212)startActivity(インテント);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方法で追加でfoll0wingの操作を行います。あなたの場合

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

、このコードは、さらに、実装チェックPaul Burke answerため、DonwloadProviderからの文書のために特別です。私は個人的に彼の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; 
    } 

希望これは、選択したファイルのURIを取得し、それからファイル名を取得

+0

あなたが入れなかった 'checkFormat'とは何ですか? – DarckBlezzer

関連する問題