标签: android-sdcard

如何在android sd卡中隐藏文件?

我正在创建android包含需要在SD卡中隐藏(无法由用户访问)的DB的应用程序.谁能告诉我怎么做?

android android-sdcard

9
推荐指数
2
解决办法
2万
查看次数

重新安装SD卡时重新启动SD卡上的应用程序服务

由于压倒性的用户投诉,我决定尝试允许我的Android应用程序的用户根据官方文档将其移动到SD卡.但是,我的应用程序的核心功能要求后台服务持续运行.如果有人将我的应用程序移动到SD卡上,无论出于何种原因都会安装SD卡,我的后台服务将被终止.

只要我能在第一个可用的机会重启服务,那对我来说一切都好.不幸的是,尽管安装位置指南声称我可以使用广播意图ACTION_EXTERNAL_APPLICATIONS_AVAILABLE来检测SD卡何时在本地重新安装,该标志本身的文档,此新闻组讨论以及我自己的测试表明此广播未传送到应用程序哪些可用.只有尚未移动到SD卡的应用才能获得广播意图.

有没有办法重新启动我的后台服务而不等待用户在重新安装SD卡后打开我的应用程序?

android sd-card android-sdcard

9
推荐指数
1
解决办法
2049
查看次数

Android 2.2 - 如何检测我是否安装在SD卡上?

我正在编写一个存储大量媒体文件的Android应用程序.它们不是混淆用户通知或其他媒体目录的类型(并且太多),但它们也必须是用户可更新的,因此我不能将它们放在资源中.我可以使用getExternalFilesDir来获取SD卡上的路径,但是如果应用程序本身安装在SD卡上,我只想这样做.如果应用程序是在内部安装的,我想将媒体放在内部存储器中.

那么如何判断我的应用程序是在内部还是外部存储器中运行?

android android-emulator android-sdcard android-2.2-froyo

9
推荐指数
1
解决办法
2945
查看次数

使用gridview显示SDCard上特定文件夹的图像

我正在尝试创建一个gridview,它载有来自SDCard上的特定文件夹的图像.该文件夹的路径是已知的,("/ sdcard/pictures"),但在我在网上看到的示例中,我不确定如何或在何处指定图片文件夹的路径,我想从中加载图像.我已经阅读了几十个教程,甚至是developer.android.com上的HelloGridView教程,但这些教程并没有教会我正在寻找什么.

我到目前为止阅读的每个教程都有:

A)从/ res文件夹中将图像称为Drawable,并将它们放入要加载的数组中,而不是使用SDCard.

B)使用MediaStore 访问SDCard上的所有图片,但未指定如何设置我想要显示图像表单的文件夹的路径

要么

C)建议使用BitmapFactory,我没有丝毫的线索如何使用.

如果我以错误的方式解决这个问题,请告诉我,并指导我采取正确的方法来做我想做的事情.

android gridview uri android-sdcard bitmapfactory

9
推荐指数
2
解决办法
3万
查看次数

Android如何计算缓存和数据大小?

如何在应用程序属性中计算缓存和数据的大小?

我将所有数据保存到SD卡,但Android告诉我,我一直在使用4 KB,但在SD卡上大约是50 KB.与缓存一样!我在那里放了一张3 MB的照片.但我的缓存大小为零!

我想我正在使用正确的目录:/mnt/sdcard/Android/data/my.package.name/files/mnt/sdcard/Android/data/my.package.name/cache.


这在Android 4.0.x中有变化吗?

看这个截图:

size android caching android-sdcard

9
推荐指数
1
解决办法
3420
查看次数

在缓存图像和数据时,您应该使用内部存储还是外部存储?

在内部/外部存储中读过这个Android保存应用程序设置/数据,但我不认为我真的得到了答案.

我正在开发一个应用程序,我应该存储一些"缓存"数据,如十几个图像和一些字符串(json).

最初我将所有这些存储在SD卡上(外部存储)但后来我认为这可能会被SDCard弃用在最近的设备中弃用.

读了一下之后,我明白外部存储不仅仅是SD卡,而是"可移动存储介质(如SD卡)或内部(不可移动)存储",所以不应该弃用但是......它是共享的空间,并没有存储在那里的文件的所有权,所以第一个问题是我删除应用程序时无法删除它们.

所以我改为内部存储,以避免文件/图像"公开",并在删除应用程序后删除它们.

这是推荐的方法吗?

对于内存较低但SD卡空间较大的设备,这是一种很好的方法吗?

我的应用程序支持从1.6到4.0(到目前为止)所以我有很多遗留设备......我必须让应用程序正常工作(好).

期待一些有趣的答案!

java storage android android-sdcard

9
推荐指数
1
解决办法
2294
查看次数

Android getExternalCacheDir()返回null

我正在尝试有效地实现加载位图中描述的最佳实践

我遇到了麻烦,因为这行:

Utils.getExternalCacheDir(context)
Run Code Online (Sandbox Code Playgroud)

DiskLruCache.java内部返回null,这意味着NullPointerException当我尝试调用.getPath()时

android bitmap imageview android-sdcard

9
推荐指数
2
解决办法
8354
查看次数

在Lollipop上使用Android Storage Access框架列出文件时出错

背景

我有一些应用程序大量使用SD卡进行文件同步.Kitkat上破坏的外部SD卡访问仍然是一个大问题,但我正在尝试使用Lollipop上提供的新API为具有此功能的用户解决此问题.

我成功请求并持有SD卡的权限,我可以列出从授予权限活动返回的根Uri中的文件.

查看有关如何在此处完成此操作的更多信息: 如何使用新的-sd-card-access-api-present-for-lollipop

然后,用户可以选择任何文件夹/子文件夹进行同步,并将文件夹文档Uri作为数据库中的字符串保留.

问题

稍后,可能在重新启动应用程序后,可以启动文件的同步.然后我尝试列出子文件夹中的文件(记住,我已经授予了正确的权限,并且这种工作的持久性也允许我访问所有子文件).

然后,我从存储的字符串创建一个新的DocumentFile实例,并尝试列出文件:

  DocumentFile dir = DocumentFile.fromTreeUri(ctx, Uri.parse(storedUri));
  dir.listFiles();
Run Code Online (Sandbox Code Playgroud)

问题是listFiles总是返回授予根Uri的子节点,而不是实际Uri的子节点我给DocumentFile.fromTreeUri方法.

我已经检查了DocumentFile的源代码,似乎有一个bug,特别是我没有看到需要进一步修改Uri:

public static DocumentFile fromTreeUri(Context context, Uri treeUri) {
  final int version = Build.VERSION.SDK_INT;
  if (version >= 21) {
    return new TreeDocumentFile(null, context,
      DocumentsContractApi21.prepareTreeUri(treeUri));
  } else {
  return null;
}
Run Code Online (Sandbox Code Playgroud)

如果我们查看DocumentsContractApi21.prepareTreeUri的来源,我们会看到重建Uri:

 public static Uri prepareTreeUri(Uri treeUri) {
   return DocumentsContract.buildDocumentUriUsingTree(treeUri,
     DocumentsContract.getTreeDocumentId(treeUri));
 }
Run Code Online (Sandbox Code Playgroud)

它调用的方法:

 public static Uri buildDocumentUriUsingTree(Uri treeUri, String documentId) {
   return new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT)
                 .authority(treeUri.getAuthority()).appendPath(PATH_TREE)
                 .appendPath(getTreeDocumentId(treeUri)).appendPath(PATH_DOCUMENT)
                 .appendPath(documentId).build();
 }

 public static String getTreeDocumentId(Uri documentUri) …
Run Code Online (Sandbox Code Playgroud)

android android-sdcard android-5.0-lollipop documentfile

9
推荐指数
1
解决办法
1852
查看次数

为什么getExternalFilesDirs()在某些设备上不起作用?

我的应用在Android 5.0上运行.我用方法getExternalFilesDirs()来检查外部SD卡是否可用.如果返回超过1 File,则表示存在外部SD卡.

但是在某些设备(例如Elephone G2)上,方法getExternalFilesDirs()只返回一个主存储目录.我确定该设备有外部SD卡(/ storage/sdcard1 /).

任何人都可以给我答案吗?

android android-sdcard android-external-storage

9
推荐指数
2
解决办法
1万
查看次数

sm list-disks not found

我正在尝试在我的新Android设备上制作SDcard内部存储空间.

我已经设法安装了ADB和Fastboot,虽然它不像我希望的那么简单,并且必须在usr/local/bin而不是usr/bin中安装它们.

我的下一步是运行"sm list-disks"但是当我这样做时返回.

adb shell
shell@gtexswifi:/ $ sm list-disks
/system/bin/sh: sm: not found
127|shell@gtexswifi:/ $ 
Run Code Online (Sandbox Code Playgroud)

不知道下一步该做什么,因为我认为路径可能是错误的,并且找不到类似问题的任何帖子.

谢谢.

macos android adb android-sdcard

9
推荐指数
1
解决办法
3836
查看次数