Questions tagged «android-sdcard»

SD卡是可用于Android的安全数字卡,可充当外部存储目录。

30
解决Android上INSTALL_FAILED_INSUFFICIENT_STORAGE错误的方法[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 该INSTALL_FAILED_INSUFFICIENT_STORAGE错误是每个Android开发者的生活的祸根。无论应用程序大小或可用存储量如何,都会发生这种情况。重新启动目标设备可以暂时解决该问题,但是很快又回来了。人们有数百(甚至数千个)留言板帖子询问为什么会出现此问题,但Google员工对此问题感到无奈。 有一个简单的解决方法。如果您的测试设备运行的是Android 2.2或更高版本android:installLocation,请使用将该属性添加到应用程序的清单文件中"preferExternal"。这将强制将应用程序安装在设备的外部存储设备(例如手机的SD卡)上。 例如: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.andrewsmith.android.darkness" android:installLocation="preferExternal" 这更像是临时解决方案,而不是解决方案,如果您希望完成的应用程序安装在设备的内存中,则可能不是理想的选择。但这至少将使开发过程不那么麻烦。

14
如何从SD卡删除文件?
我正在创建一个文件以作为电子邮件附件发送。现在,我想在发送电子邮件后删除图像。有没有办法删除文件? 我已经尝试过,myFile.delete();但是没有删除文件。 我正在将此代码用于Android,因此编程语言是Java,使用通常的Android方法访问SD卡。发送电子邮件后,将an返回到屏幕onActivityResult时,我正在方法中删除文件Intent。

3
如何使用为Android 5.0(Lollipop)提供的新SD卡访问API?
背景 在Android 4.4(KitKat)上,Google限制了对SD卡的访问。 从Android Lollipop(5.0)开始,开发人员可以使用新的API,要求用户确认是否允许访问特定文件夹,如本Google-Groups帖子所述。 问题 该帖子指导您访问两个网站: https://android.googlesource.com/platform/development/+/android-5.0.0_r2/samples/Vault/src/com/example/android/vault/VaultProvider.java#258 这看起来像一个内部示例(也许稍后会在API演示中显示),但是很难理解发生了什么。 http://developer.android.com/reference/android/support/v4/provider/DocumentFile.html 这是新API的官方文档,但没有提供足够的使用方法细节。 它告诉你的是: 如果确实需要完全访问整个文档子树,请启动ACTION_OPEN_DOCUMENT_TREE以让用户选择目录。然后将得到的getData()传递到fromTreeUri(Context,Uri)以开始使用用户选择的树。 浏览DocumentFile实例树时,始终可以使用getUri()获取表示该对象的基础文档的Uri,以便与openInputStream(Uri)等配合使用。 为了简化运行KITKAT或更早版本的设备上的代码,可以使用fromFile(File)来模拟DocumentsProvider的行为。 问题 我对新API有一些疑问: 您如何真正使用它? 根据该帖子,操作系统将记住该应用已获得访问文件/文件夹的权限。您如何检查是否可以访问文件/文件夹?是否有一个函数可以向我返回我可以访问的文件/文件夹列表? 您如何在Kitkat上处理此问题?它是支持库的一部分吗? 操作系统上是否有设置屏幕,可显示哪些应用有权访问哪些文件/文件夹? 如果在同一设备上为多个用户安装了一个应用程序,会发生什么? 关于此新API还有其他文档/教程吗? 可以撤销权限吗?如果是这样,是否有意图发送到应用程序? 会在选定文件夹上递归请求权限吗? 使用权限还会允许用户根据自己的选择进行多次选择吗?还是应用程序需要明确告知意图允许哪些文件/文件夹? 在模拟器上有没有办法尝试新的API?我的意思是,它具有SD卡分区,但可以用作主要的外部存储,因此已经授予了对其的所有访问权限(使用简单权限)。 当用户用另一张SD卡替换SD卡时会发生什么?

7
我如何adb拉SD卡中存在的文件夹的所有文件
我的SD卡中有一个文件夹为: /mnt/sdcard/Folder1/Folder2/Folder3/*.jpg Folder1和Folder2的名称保持不变,并且Folder2内有Folder3、4、5,依此类推。.我想使用adb将所有jpeg文件而不是所有文件(还有更多文件)拉到计算机上的当前目录中。 。 每个文件夹都有不同数量的jpeg文件和其他文件,我尝试使用此文件: adb pull mnt/sdcard/Folder1/Folder2/Folder/*.jpg . 但是它没有用..所以,我如何用一个命令(单个命令,因为每个文件夹具有不同数量的文件)来adb提取SD卡任何文件夹中的所有文件。

4
从sdcard将图像文件读取到位图中,为什么会出现NullPointerException?
如何从SD卡将图像文件读入位图? _path = Environment.getExternalStorageDirectory().getAbsolutePath(); System.out.println("pathhhhhhhhhhhhhhhhhhhh1111111112222222 " + _path); _path= _path + "/" + "flower2.jpg"; System.out.println("pathhhhhhhhhhhhhhhhhhhh111111111 " + _path); Bitmap bitmap = BitmapFactory.decodeFile(_path, options ); 我正在为位图获取NullPointerException。这意味着位图为空。但是我有一个图像“ .jpg”文件存储在sdcard中,作为“ flower2.jpg”。有什么问题?

12
Android获得内部/外部存储器的自由大小
我想以编程方式获取设备内部/外部存储上的可用内存大小。我正在使用这段代码: StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath()); long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount(); long megAvailable = bytesAvailable / 1048576; Log.e("","Available MB : "+megAvailable); File path = Environment.getDataDirectory(); StatFs stat2 = new StatFs(path.getPath()); long blockSize = stat2.getBlockSize(); long availableBlocks = stat2.getAvailableBlocks(); String format = Formatter.formatFileSize(this, availableBlocks * blockSize); Log.e("","Format : "+format); 我得到的结果是: 11-15 …

26
如何获取Android 4.0+的外部SD卡路径?
三星Galaxy S3具有一个外部SD卡插槽,该插槽安装在上/mnt/extSdCard。 我怎么能通过类似的东西走这条路Environment.getExternalStorageDirectory()? 这将返回mnt/sdcard,而我找不到外部SD卡的API。(或某些平板电脑上的可移动USB存储设备。)

4
如何在Android中写入SD卡上的文件夹?
我正在使用以下代码从服务器下载文件,然后将其写入SD卡的根目录,一切正常: package com.downloader; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.os.Environment; import android.util.Log; public class Downloader { public void DownloadFile(String fileURL, String fileName) { try { File root = Environment.getExternalStorageDirectory(); URL u = new URL(fileURL); HttpURLConnection c = (HttpURLConnection) u.openConnection(); c.setRequestMethod("GET"); c.setDoOutput(true); c.connect(); FileOutputStream f = …

7
在Android上写入外部SD卡的通用方法
在我的应用程序中,我需要在设备存储中存储大量图像。这样的文件往往可以满足设备的存储需求,我希望用户可以选择外部SD卡作为目标文件夹。 我到处都读到Android不允许用户写入外部SD卡,所谓SD卡,是指外部可安装的SD卡,而不是外部存储,但是文件管理器应用程序设法在所有Android版本上写入外部SD。 在不同的API级别(Pre-KitKat,KitKat,Lollipop +)上授予对外部SD卡的读/写访问权限的更好方法是什么? 更新1 我从Doomknight的答案中尝试了方法1,但无济于事:如您所见,在尝试在SD上写入之前,我正在运行时检查权限: HashSet<String> extDirs = getStorageDirectories(); for(String dir: extDirs) { Log.e("SD",dir); File f = new File(new File(dir),"TEST.TXT"); try { if(ActivityCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)==PackageManager.PERMISSION_GRANTED) { f.createNewFile(); } } catch (IOException e) { e.printStackTrace(); } } 但是我收到访问错误,尝试在两种不同的设备上进行:HTC10和Shield K1。 10-22 14:52:57.329 30280-30280/? E/SD: /mnt/media_rw/F38E-14F8 10-22 14:52:57.329 30280-30280/? W/System.err: java.io.IOException: open failed: EACCES …

11
Android:如何通过Intent打开特定文件夹并在文件浏览器中显示其内容?
我以为这很容易,但是事实证明事实并非如此。 是)我有的: 我的外部存储设备上有一个名为“ myFolder”的文件夹(不是sd卡,因为它是Nexus 4,但这不是问题)。该文件夹包含一些*.csv文件。 我想要的是: 我想编写一种执行以下操作的方法:显示各种应用程序(文件浏览器),我可以从中选择一个(见图)。单击它之后,所选的文件浏览器应启动并显示“ myFolder”的内容。不多不少。 我的问题: 我该怎么做?我想我与以下代码非常接近,但是无论我做什么-我确信肯定有些东西我还没有弄清楚-它总是只从外部存储打开主文件夹。 public void openFolder() { File file = new File(Environment.getExternalStorageDirectory(), "myFolder"); Log.d("path", file.toString()); Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setDataAndType(Uri.fromFile(file), "*/*"); startActivity(intent); }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.