相关疑难解决方法(0)

Android:从SD卡中删除图像

我需要从用户选择的SD卡中删除图像.在我的活动中,在用户从图库中选择图像后,我执行以下代码:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == SELECT_PICTURE) {
            Utils.imgUri = data.getData();
            Utils.imgPath = getPath(Utils.imgUri);
            File file = new File(Utils.imgPath);
            boolean deleted = file.delete();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

其中getPath方法是:

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    if(cursor!=null){
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
    else return null;
}
Run Code Online (Sandbox Code Playgroud)

图像被正确删除,但在图库中仍然保留已删除图像的预览.当我点击它时,加载了一个黑色图像..

那么,在从我的应用代码中删除一些图像后,如何更新图库预览?

android android-sdcard

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

三星Galaxy上的Android SD卡特性

我的应用程序要求使用手动将文件从PC复制到我的应用程序在其中创建的子目录中的SD卡(或者我将在根目录中查找它).到目前为止,这么好(大多数人没有问题,除非他们试图在手机仍然连接时运行我的应用程序,然后问为什么它告诉他们"SD卡未安装":-)).

无论如何,我想知道三星Galaxy手机是如何工作的,因为我的理解是他们有一个外部和内部SD卡.我的应用程序当前调用"Environment.getExternalStorageDirectory()"; 这会返回EXTERNAL卡的根目录吗?

此外,当用户将设备安装到他们的PC上时,它看起来像什么?他们是看到两个已安装的驱动器,还是仅将外部卡作为驱动器或其他内容?

android

8
推荐指数
1
解决办法
8236
查看次数

Android mkdirs()创建一个零字节文件而不是文件夹

在我的Android应用程序中,我试图在SD卡上创建以下文件夹:

/mnt/sdcard/OSGiComponents/admin/felix-cache/
Run Code Online (Sandbox Code Playgroud)

这是代码:

File cacheDir = 
    new File( Environment.getExternalStorageDirectory().getAbsolutePath() + 
              "/OSGiComponents/admin/felix-cache/" );
// Create the folder
cacheDir.mkdirs();
// Check if it exists
if ( ! cacheDir.exists() ) {
    Log.e ( "Debug" , "Cache directory cannot be created" );
}
Run Code Online (Sandbox Code Playgroud)

我在android清单文件的清单标签下有WRITE_STORAGE_PERMISSION.我能够在SD卡上创建其他文件夹和文件而不会出现问题.该应用程序适用于以下手机:

  1. Nexus S(扎根)运行姜饼(2.3)
  2. 运行Jelly Bean的Nexus S(无根)(4.1​​.2)
  3. HTC Desire(rooted)运行Froyo(2.2)
  4. HTC Desire(无根)运行Froyo(2.2)

然而,在运行Ice Cream Sandwich(4.0.4)的三星Galaxy Nexus手机(无根)上,该目录被创建为零大小的文件,可以在Astro中看到.exists()调用返回false.

Astro显示零字节felix-cache文件

  1. 从文件夹名称可以看出,我正在使用Apache Felix.如果不存在,Felix会自动创建缓存目录.在Galaxy Nexus上,它总是抱怨它无法创建缓存目录.Astro显示0字节文件而不是文件夹.这就是我决定在初始化Felix之前尝试自己创建缓存文件夹的原因.
  2. 所以,我自己创建了缓存文件夹.该应用程序第一次正常工作,我可以在Astro中看到该文件夹​​正常.如果我关闭应用程序,然后删除Astro中的文件夹,然后重新启动应用程序,甚至我的代码神秘地无法创建缓存目录,Astro显示0字节文件.
  3. 无法在Astro中删除0字节文件.但是,当我重新启动手机时,该文件夹神奇地存在并且正常.
  4. 我使用FileInstall来观看OSGiComponents/install文件夹.当我将捆绑罐放入该文件夹时,它会在除Galaxy Nexus之外的所有手机上检测并安装好(当应用程序第一次运行时).FileInstall没有关于无法查看目录的日志/错误.
  5. 我在2台Galaxy Nexus手机上测试了这个,同样的问题.

我怀疑这是一个权限问题,但我不确定它是什么,以及为什么创建一个0字节文件而exists()返回false.代码中没有其他地方我创建这个文件.

关于可能出现什么问题的任何建议?

谢谢 :)

更新:我想我已经确定了问题,请看我发布的答案.

android apache-felix mkdirs

7
推荐指数
1
解决办法
3533
查看次数

如何将webView缓存移动到SD?

我已经看到一些应用程序,如海豚浏览器(不是高清版本,正常的)利用缓存到SD的webview但我似乎无法弄清楚如何做到这一点,有谁知道如何做到这一点或指出我正确的方向?任何帮助是极大的赞赏!谢谢 :)

android caching webview

6
推荐指数
2
解决办法
3551
查看次数

在Android 2.x中是否有文档记录方式来检查多个SD卡的内容?

一些Android 2.x平板电脑,如HTC Flyer和三星Galaxy Tab,支持内部平板电脑存储和外部SD卡.例如,在我的传单上,/sdcard并且/sdcard2是独立的,前者代表平板电脑的"内部存储".

如果我使用Environment.getExternalStorageDirectory(),似乎没有任何关于将返回哪些存储位置的设置规则.在使用中getExternalStorageDirectory(),我担心的是我只能找到存储在两个存储位置之一上的媒体.

一种解决方案是硬编码扫描/sdcard*到应用程序,但这假设所有设备将使用它作为命名方案,我不认为这是一个安全的假设.

是否有记录在Android 2.x上扫描和使用多个SD卡/存储位置的方法?

我的目标实际上是在平板电脑上找到所有有声读物,所以我想以/sdcard*/Audiobooks一些记录的方式查找和使用所有有声读物.

android android-2.2-froyo

5
推荐指数
1
解决办法
1601
查看次数