2014-09-10 25 views
0

我需要使用此功能選擇的圖像的名稱,如何獲得目錄和文件從畫廊

java.io.File.File(文件目錄,字符串名稱)

公共文件(文件目錄,字符串名稱)

在API級別1中添加使用指定的 目錄和名稱構造一個新文件。參數dir存儲文件爲 的目錄。命名文件的名稱。如果名稱爲 null,則拋出NullPointerException。

現在我們可以看到它需要文件目錄和名稱作爲參數。現在我正在通過意圖從圖庫中選擇圖像。如何獲取所選文件的目錄和名稱?

下面是摘錄:

public File String_to_File(String img_url) { 

     try { 
      File rootSdDirectory = Environment.getExternalStorageDirectory(); 

--------------------------------------------------------------------------------------- 
      **casted_image = new File(rootSdDirectory, "attachment.jpg");** 
--------------------------------------------------------------------------------------- 

      if (casted_image.exists()) { 
       casted_image.delete(); 
      } 
      casted_image.createNewFile(); 

      FileOutputStream fos = new FileOutputStream(casted_image); 

      URL url = new URL(img_url); 
      HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
      connection.setRequestMethod("GET"); 
      connection.setDoOutput(true); 
      connection.connect(); 
      InputStream in = connection.getInputStream(); 

      byte [ ] buffer = new byte [1024]; 
      int size = 0; 
      while ((size = in.read(buffer)) > 0) { 
       fos.write(buffer, 0, size); 
      } 
      fos.close(); 
      return casted_image; 

     } catch (Exception e) { 

      System.out.print(e); 
      // e.printStackTrace(); 

     } 
     return casted_image; 
    } 

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

     if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 
      Uri selectedImage = data.getData(); 
      String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

      Cursor cursor = getContentResolver().query(selectedImage, 
        filePathColumn, null, null, null); 
      cursor.moveToFirst(); 

      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      String picturePath = cursor.getString(columnIndex); 
      cursor.close(); 

      iv.setImageURI(selectedImage); 

      // String picturePath contains the path of selected Image 
     } 
    } 

應該怎樣做適當的參數傳遞給函數在字裏行間?

我在參考sharing-text-image-in-twitter-android-example。除了我想用我自己選擇的圖片而不是他的URL圖片之外,所有的都很好。請幫忙。

+0

我不從URL中取圖像,我現在從圖庫中選擇它。所以我需要所選文件的目錄和名稱。 – Akshat 2014-09-10 08:31:35

+0

你有'String picturePath = cursor.getString(columnIndex);'這是路徑,你可以創建一個類成員變量併爲其分配'cursor.getString(columnIndex);'。然後在'String_to_File(String img_url)' – 2014-09-10 08:32:54

回答

1

EXTRA_ALLOW_MULTIPLE選擇是通過Intent.putExtra()方法設置的意圖:

intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); 

上面的代碼應該如下所示:

Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(i, RESULT_LOAD_IMAGE); 
//intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); 

注意:EXTRA_ALLOW_MULTIPLE選項僅在Android API 18和更高版本中可用。

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

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 
    Uri selectedImage = data.getData(); 
    String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

    Cursor cursor = getContentResolver().query(selectedImage, 
     filePathColumn, null, null, null); 
    cursor.moveToFirst(); 

    int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
    String picturePath = cursor.getString(columnIndex); 
    casted_image = new File(picturePath); 
    cursor.close(); 
    // String picturePath contains the path of selected Image 
    } 
} 
1

你可以這樣做。

File selectedFile = Environment.getExternalStorageDirectory(); 
File parentDir = selectedFile.getParentFile(); 

casted_image = new File(parentDir, "attachment.jpg"); 

或者如果您想要傳遞選定文件的名稱而不是特定文件名。使用下面的行。

casted_image = new File(parentDir, selectedFile.getName()); 

,你也可以檢查所選的文件是否是目錄或一個普通的文件,使用selectedFile.isFile(); & selectedFile.isDirectory();

+0

訪問它它顯示圖片上傳errorIs一個目錄。我參考http://chintankhetiya.wordpress.com/2013/07/18/sharing-text-image-in-twitter-android-example/。除了我想用我自己選擇的圖片而不是他的URL圖片之外,所有的都很好。請幫忙。 – Akshat 2014-09-10 09:17:13