Articles of sd card

如何检查目录路径的权限,并不会导致EACCES错误?

我有一个照片编辑Android应用程序,用户可以选择结果照片的输出目录。 问题是Google使用KITKAT版本对sdcard写入权限进行了更改,而使用Android KITKAT版本的设备将不允许应用程序编写辅助sdcards。 现在我需要检查用户选择的目录是否已授予权限,并且不会抛出EACCES错误。 我已经在检查canRead和canWrite,但这些都无济于事。 你能否告诉我如何检查选择的目录是否会抛出EACCES。 我唯一的解决方案是尝试在try catch中编写一个文件,但是我希望有更好的方法来实现它。 [更新k3b 2016-09-19] 我在我的android-4.4上试过这个但没有成功 Uri uri = Uri.fromFile(file); int permissionCode = context.checkCallingOrSelfUriPermission(uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION); if (permissionCode == PackageManager.PERMISSION_DENIED) { // on my android-4.4 i always get PERMISSION_DENIED even // if i can overwrite the file return false; }

获取连接到Android设备的所有存储设备的路径列表

我想获取连接到Android设备的所有存储设备的列表。 例如 – 内部存储(存储所有文件夹,如下载,DCIM等),SD卡和OTG设备。 我知道有很多StackOverflowpost讨论了这个主题,但没有一个可以满足我的目的,如上所述。 我可以通过调用Environment.getExternalStorageDirectory().getPath()来获取内部存储,它返回内部存储的路径。 任何有关这方面的帮助都会非常感激,因为没有标准的AFAIK可以检索所有连接的存储设备的列表。 此外,许多解决方案不适用于不同的设备和Android版本。

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 […]