我onActivityResult从mediastore图像选择返回,我可以使用以下内容获取图像的URI:
Uri selectedImage = data.getData();
Run Code Online (Sandbox Code Playgroud)
将其转换为字符串可以得到:
content://media/external/images/media/47
Run Code Online (Sandbox Code Playgroud)
或者路径给出:
/external/images/media/47
Run Code Online (Sandbox Code Playgroud)
但是我似乎无法找到将其转换为绝对路径的方法,因为我想将图像加载到位图而不必将其复制到某处.我知道这可以使用URI和内容解析器完成,但这似乎在重新启动手机时中断,我想MediaStore在重新启动之间不会保持其编号相同.
我将图像添加到SDCARD上的文件夹中.由于图像和我的文件夹在图库中没有立即可见,我试图让MediaScannerConnection更新并在图库中显示文件夹/图像.这对我来说不是很好,因为Gallery中没有任何内容.我只在Eclipse AVD中测试.
我没有看到很多关于这个的讨论,因为scanFile是自api8以来的新功能.有人能说明这是怎么做的吗?
我在服务和Activity中尝试它但在onScanCompleted时继续获得uri = null.
我用Intent ACTION_GET_CONTENT调用startActivityForResult.一些应用程序使用此Uri返回数据:
内容://媒体/外部/图像/媒体/ 18122
我不知道它是图像,视频还是一些自定义内容.如何使用ContentResolver从此Uri获取实际文件名或内容标题?
我正在开发一个 Android 应用程序,其中一项功能是让用户选择要打开的文件(我想打开纯文本 .txt 文件)。我之前使用 Java 开发过 Android 应用程序,但对于这个应用程序,我使用的是 Kotlin,这是我第一次使用 Kotlin。
我目前让应用程序显示一个文件选择器,让用户点击他们想要打开的文件。然后我尝试使用 File 对象打开文件并执行 forEachLine 循环。但出于某种原因,它抛出一个 java.io.FileNotFoundException (没有这样的文件或目录)与从文件选择器中选择的文件。我不确定出了什么问题,是否必须进行一些转换才能转换文件路径?
我的“加载”按钮的代码:
val btn_load: Button = findViewById<Button>(R.id.btn_load_puzzle)
btn_load.setOnClickListener {
val intent = Intent()
.setType("*/*")
.setAction(Intent.ACTION_GET_CONTENT)
startActivityForResult(Intent.createChooser(intent, "Select a file"), 111)
}
Run Code Online (Sandbox Code Playgroud)
我响应文件选择的功能:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
// Selected a file to load
if ((requestCode == 111) && (resultCode == RESULT_OK)) {
val selectedFilename = data?.data //The uri with the location of the file
if (selectedFilename …Run Code Online (Sandbox Code Playgroud) 检索URI的PATH,以便我可以将其发布到我的网络服务器
用于启动浏览的代码
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, BROWSE_IMAGE_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
用于检索所选图像的代码
if (RESULT_OK == resultCode &&
BROWSE_IMAGE_REQUEST_CODE == requestCode) {
Uri uri = data.getData();
Run Code Online (Sandbox Code Playgroud)
要发送到网络服务器的代码
File file = new File(uri.getPath());
new FileSystemResourceFile(file);
Run Code Online (Sandbox Code Playgroud)我目前能够从URI中检索PATH没有概率,/external/images/media/24但由于一些奇怪的原因,文件总是为空,请帮忙吗?
在我的应用程序中,用户可以从相机和图库中选择图像以加载到ImageView中。
我正在使用以下代码打开相关的应用程序以选择图像:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
Run Code Online (Sandbox Code Playgroud)
问题出在Google硬盘上。如果用户从Google云端硬盘中选择图片,则我将获得这样的URI:content://com.google.android.apps.docs.storage.legacy/enc%3DHxtpLaMr66OMOzDOKTRZ-5ed7q7Szj7F7nC0IlxBnV8hx2P1%0A
我能够生成位图,但无法获取文件名。
InputStream input = context.getContentResolver().openInputStream(uri);
Bitmap bitmap = BitmapFactory
.decodeStream(input);
Run Code Online (Sandbox Code Playgroud)
我需要显示用户选择的文件名。
请帮我从Google驱动器URI中提取图片名称。
android android-imageview google-drive-api android-bitmap google-drive-android-api
我遇到的问题是,我无法从搭载 Android 9 的智能手机上选择的文件中提取文件扩展名。该问题不会出现在搭载 Android 8 或更低版本的设备上。
当用户选择任何类型的文件时,onActivityResult 被调用。在这个方法中,我从 FileUtils 类调用 getPath,所以我可以提取文件扩展名。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Uri uri = new Uri.Builder().build();
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PICKFILE_REQUEST_CODE: {
String path = new File(data.getData().getPath()).getAbsolutePath();
if (path != null) {
uri = data.getData();
path = FileUtils.getPath(getApplicationContext().getContentResolver(), uri);
name = path.substring(path.lastIndexOf("."));
extension = path.substring(path.lastIndexOf(".") + 1);
}
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
FileUtils类(来自此 repo)的getPath()通过 URI 评估文件是哪种文件,但对这种情况负责的是以下部分:
public static String …Run Code Online (Sandbox Code Playgroud)