Articles of sd card

用于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卡上文件夹的大小? 我使用文件夹来缓存图像,并希望显示所有缓存图像的总大小。 除了迭代每个文件之外,还有其他办法吗? 它们都驻留在同一个文件夹中?

在Android中将数据存储在SD卡上

使用文档中的数据存储页面 ,我试图将一些数据存储到SD卡。 这是我的代码: // Path to write files to String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/"+ctxt.getString(R.string.package_name)+"/files/"; String fname = "mytest.txt"; // Current state of the external media String extState = Environment.getExternalStorageState(); // External media can be written onto if (extState.equals(Environment.MEDIA_MOUNTED)) { try { // Make sure the path exists boolean exists = (new File(path)).exists(); if (!exists){ […]

播放SD卡上的MP3声音

我的平板电脑的SD卡上有一个名为“/Android/data/com.example.android.app/files”的目录。 我只是手动创build它,因为我不知道如何testing我的应用程序的这一方面。 我有文件名存储在像“/folder1/audio1.mp3”,“/folder2/audio1.mp3”等sqlite数据库…文件具有相同的名称,但在不同的文件夹,因为它们是相同的东西是不同的语言。 我在SD卡的“/Android/data/com.example.android.app/files”目录中有这些文件夹(folder1和folder2)和所有mp3文件。 所以,我从数据库中获取文件名,并尝试使用以下命令到达SD卡上的文件夹: String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/com.example.android.app/files"; 这只是基本上结束了path“存储/ Android /数据/ com.example.android.app /文件”。 现在,在开发早期,我的原始文件夹里有几个mp3文件,但是最后会有太多的文件保存在那个文件夹中,所以我开始调查从SD卡中获取它们。 当我生他们的时候,我是这样得到的: rid = getResources().getIdentifier(filname, "raw", "com.example.android.app"); 现在,SD卡上的文件变成: filename = "/folder1/audio.mp3" 而不是“生”,我有: "storage/Android/data/com.example.android.app/files" 基本上是这样玩的 AssetFileDescriptor afd = mContext.getResources().openRawResourceFd(rid); mMP.reset(); mMP.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength()); mMP.prepare(); mMP.start(); afd.close(); 然而,这种方法现在似乎没有一样的工作方式。 你可以从SD卡上的MP3文件获取资源ID? 那现在是我的合适的方式吗? 有没有另外一种方式让我玩,无论来源是内部还是外部记忆,都可以起作用。 彻底困惑。 编辑:我确实发现这可能会有所帮助…但也许只有等式。 编辑2:我在这里看。 它使用我不认为是我想要的媒体存储。

Android中的EACCESS权限被拒绝

在外部SD卡中写入文件时,我收到错误EACCESS权限被拒绝。 我已经设置了权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>但是当我读取文件,我成function够读取它,但不能写入文件。 我用来在SD卡中写入文件的代码是: String path="mnt/extsd/Test"; try{ File myFile = new File(path, "Hello.txt"); //device.txt myFile.createNewFile(); FileOutputStream fOut = new FileOutputStream(myFile); OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); myOutWriter.append(txtData.getText()); myOutWriter.close(); fOut.close(); Toast.makeText(getBaseContext(),"Done writing SD "+myFile.getPath(),Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(getBaseContext(), e.getMessage(),Toast.LENGTH_SHORT).show(); System.out.println("Hello"+e.getMessage()); } } 外部存储卡的path是mnt/extsd/ 。 这就是为什么我不能够使用Environment.getExternalStorageDirectory().getAbsolutePath()给我一个pathmnt/sdcard ,这个path是我的平板电脑的内部存储path。 请提出为什么这是如此n我该如何解决这个问题