[英]how to get the name of a selected image from gallery of images android studio
[英]How to get Directory and file name of an image selected from gallery
我需要使用这个功能
java.io.File.File(文件目录,字符串名称)
公共文件(文件目录,字符串名称)
API级别1中已添加使用指定的目录和名称构造一个新文件。 参数dir存储文件的目录。 命名文件的名称。 如果name为null,则抛出NullPointerException。
现在我们可以看到它需要文件dir和名称作为参数。 现在,我按意图从图库中选择一个图像。 如何获取所选文件的目录和名称。
这是代码段:
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
}
}
如何在行之间将适当的参数传递给函数?
我正在引用共享文本图像在Twitter的Android示例 。 一切都很好,除了我想使用自己选择的图像而不是他的URL图像。 请帮忙。
你可以这样
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.isFile();
& selectedFile.isDirectory();
通过Intent.putExtra()
方法在意图上设置EXTRA_ALLOW_MULTIPLE
选项:
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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.