Articles of sd card

Android – 存储从网络下载的图像

我有一个问题,我是否应该(以及如何)存储从网络上加载的图像。 假设我从我的Android应用程序调用Web服务。 在这个Web服务中,我获得了Web上图像的URL。 我下载并在ListView的列表项的左侧显示此图像。 我的问题是,我应该使用什么方法来存储图像? 我是不是该: 将其保存到SDCard,检查创建ListView时是否存在(在后续请求中)并根据需要重新下载(偶尔更新图像,以防它发生变化)。 使用Context.getCacheDir()将其存储在缓存中,但可能会被迫更频繁地重新下载,因为我不能依赖缓存中的图像。 始终下载并永远不会存储图像。 图像文件本身相当小,但我希望一些用户可以下载/存储这些小图像。 哪种方法效果最好,和/或什么是首选方法? 作为一个附带问题,我应该首先加载我的ListView中的所有图像(并可能锁定UI一段时间)或者异步加载它们,但同时显示占位符图形(这可能更“丑陋”)? 这里的标准是什么?

在Android应用程序中解压缩sd卡上的压缩文件

我有一个压缩密码保护在Android模拟器上的SD卡上保存的video文件。 现在我想通过代码在SD卡上解压缩该video文件。 我怎样才能实现这一目标? 任何帮助或代码? 提前致谢

java.io.FileNotFoundException(Permission denied)当试图写入Android sdcard时

我正在尝试从照片库中选择一个图像文件并写入SD卡。 以下是导致exception的代码。 在尝试创建FileOutputStream时,它似乎抛出此exception。 我将以下行添加到嵌套在application元素中的清单文件中。 我无法find问题的解决方案: public boolean saveSelectedImage( Uri selectedImage, int imageGroup, int imageNumber ) { boolean exception = false; InputStream input = null; OutputStream output = null; if( externalStorageIsWritable() ) { try { ContentResolver content = ctx.getContentResolver(); input = content.openInputStream( selectedImage ); if(input != null) Log.v( CLASS_NAME, “Input Stream Opened successfully”); File outFile = […]

用于sdcard的android意图准备好了

我有一个使用SD卡上的文件的应用程序,应用程序在手机启动时运行,并且很明显,当程序首次运行时无法访问该文件,因为它在SD卡可用之前开始工作。 是否有一个广播接收器,我可以用来判断SD卡准备好了吗? 更新 只是为了总结一下注册意图的答案: IntentFilter filter = new IntentFilter (Intent.ACTION_MEDIA_MOUNTED); filter.addDataScheme(“file”); registerReceiver(this.mSDInfoReceiver, new IntentFilter(filter)); 并创建一个广播接收器来响应它: private BroadcastReceiver mSDInfoReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context arg0, Intent intent) { // Code to react to SD mounted goes here } };

将图像从Android上的可绘制资源保存到SD卡

我想知道如何通过点击按钮将图像保存到用户的SD卡。 有人可以告诉我该怎么做。 Image的格式为.png,存储在drawable目录中。 我想编写一个按钮将该图像保存到用户的SD卡。

如何为Jellybean创建一个可用的AVD(API 17)?

我尝试使用以下过程在Kubuntu 17.04中为Jellybean(API 17)创建AVD: 从Android Studio启动AVD Manager 单击“创建虚拟设备”按钮: 选择Nexus 4硬件配置文件: 点击下一步” 单击“x86 Images”选项卡,然后选择“Jelly Bean / 17 / x86 / Android 4.2(使用Google API)”图像: 点击下一步” 将设置保留为默认值: 点击“完成” 现在,由于Ubuntu 17.04(及其衍生产品)的一个不幸问题,单击其条目旁边的播放按钮无法直接启动模拟器。 (单击它什么都不做。)相反,我必须从终端启动模拟器: $ cd ~/Android/Sdk/tools $ LD_PRELOAD=’/usr/$LIB/libstdc++.so.6′ ./emulator -avd Nexus_4_API_17 模拟器启动并出现主屏幕: 然而,与它的交互立即显示存在问题。 相机显示错误: 单击“设置”应用中的“存储”会导致“设置”应用崩溃。 我做错了什么,如何解决这个问题? 编辑:我点击“显示高级设置”并确认确实要创建SD卡: 我还确认文件~/.android/avd/Nexus_4_API_17.avd/sdcard.img.qcow2存在。 编辑:我按照相同的步骤创建了一个Kit Kat AVD(使用Nexus 5硬件配置文件),但问题并不存在。 SD卡按预期工作。 编辑:我尝试使用mksdcard手动创建SD卡图像: mksdcard -l TEST 100M sdcard.img …然后将其直接传递给模拟器: emulator […]

通过adb获取sdcard目录

我正在制作一个应用程序,它通过adb从设备SD卡中提取文件(由Android应用程序保存)。 问题是不同的设备,有各种SD卡目录 即: SD卡 SD卡/ external_sd 首先我发明了以下解决方案: 运行adb shell LS 检查dir“sdcard”是否存在 如果是,请运行sdcard / ls并检查external_sd是否存在 返回值。 但问题是我有两个三星设备GT-I9100和GT-I9000并且都有一个目录sdcard/external_sd 。 当我检查System.getenv(“EXTERNAL_STORAGE”)返回sdcard和另一个sdcard/external_sd 。 我需要将之前保存的文件拉到System.getenv(“EXTERNAL_STORAGE”) 。 所以问题是:是否有任何命令直接从adb获取sdcard目录,而无法访问Android代码? 或者也许我可以开始使用adb的活动,并获得返回值? 这可能吗? 编辑:find解决方案: adb shell echo $EXTERNAL_STORAGE

Android – 如何在启动后在/ sdcard上启动应用程序

有没有办法如何启动和Android应用程序自动启动后,如果它在/sdcard ? 好的,可能是BroadcastReceiver 。 但哪个行动是正确的呢? ACTION_BOOT_COMPLETED – does not work if it is on the /sdcard (documented) ACTION_MEDIA_MOUNTED – does not work if it is on the /sdcard (which is undocumented) ACTION_EXTERNAL_APPLICATIONS_AVAILABLE – does not work, I do not know why ACTION_USER_PRESENT – does not work if the BroadcastReceiver is registered in AndroidManifest (which is […]

如何在Android 7.0+中检索SD卡的序列号?

在某些版本的Android和其他Linux版本中,可以获取已安装SD卡的序列号,例如通过读取/sys/class/mmc_host/mmc0/mmc0:0001/serial或/sys/block/mmcblk0/device/serial (具体数字可能有所不同)。 在我的测试中,只要将SD卡插入内置SD卡插槽(不通过USB适配器安装),这就非常可靠。 但是从Android 7.0 Nougat开始, 据说操作系统阻止访问这些信息,至少在某些设备上是这样。 我通过在新的阿尔卡特A30 GSM(Android 7.0)上运行测试应用程序对此进行了测试,实际上上述方法失败并出现权限错误: java.io.FileNotFoundException: /sys/block/mmcblk0/device/serial (Permission denied) at java.io.FileInputStream.open(Native Method) 为了将来参考,我们(从adb shell测试)拥有ls -ld以下权限: /sys/class/mmc_host但不是/sys/class/mmc_host/mmc0 /sys/block但不是/sys/block/mmcblk0 由于上述方法不再有效, 有没有其他方法可以获得Android 7.0或更高版本中安装的SD卡的序列号? 如果不这样做,谷歌是否有关于提供或不提供此function的计划的任何文件或其他声明? 我没有在Android 问题跟踪器中find任何内容,但也许我没有find正确的搜索引擎。 为了确保问题清楚,我正在谈论在非根设备上运行的普通(非系统)应用程序可以做什么,以及应用程序通常可以请求和接收的任何权限。 仅供参考, /sbin目录似乎不可读,因此像/sbin/udevadm这样的命令不是一个选项。

如何在Android中获取SD卡上文件夹的大小?

是否可以轻松获取SD卡上文件夹的大小? 我使用文件夹来缓存图像,并希望显示所有缓存图像的总大小。 除了迭代每个文件之外,还有其他办法吗? 它们都驻留在同一个文件夹中?