标签: android-sdcard

写入 SD 卡总是失败

我正在尝试将文件从任何位置(包括内部设备存储)移动到 SD 卡,

为此我有

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

在我的清单中,并通过检查是否使用以下方法授予权限来检查它是否有效:

Contex.checkCallingOrSelfPermission("android.permission.WRITE_EXTERNAL_STORAGE")Contex.checkCallingOrSelfPermission("android.permission.READ_EXTERNAL_STORAGE")

我尝试了 3 种不同的方法来做到这一点:

  1. Files.move(original, newPath1),它是 Guava com.google.common.io 自带的
  2. 这种方法:

    public static void move(File src, File dst) throws IOException {
        FileInputStream inStream = new FileInputStream(src);
        FileOutputStream outStream = new FileOutputStream(dst);
        FileChannel inChannel = inStream.getChannel();
        FileChannel outChannel = outStream.getChannel();
        inChannel.transferTo(0, inChannel.size(), outChannel);
        inStream.close();
        outStream.close();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. original.renameTo(newPath1);

我阅读了很多关于此的 SO 帖子,我尝试过的所有解决方案都不起作用,我确保安装了 SD 卡,并且在尝试时我没有将我的设备连接到 PC。我什至尝试了 2 种不同的带有 SD 卡的设备。请注意,我可以使用 BitmapFactory.decode() 以完全相同的路径访问图像,并且可以将该图像加载到 imageview。

我总是收到 EACCES(权限被拒绝)。我不知道还能做什么来解决这个问题:(

11-13 11:11:54.358 19192-19372/xaday.ofek.ron.xaday W/System.err: java.io.FileNotFoundException: /storage/sdcard1/DCIM/thai2/IMG-20150702-WA0001.jpg: open …
Run Code Online (Sandbox Code Playgroud)

android android-sdcard

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

Android - 何时创建 SD 卡中的默认文件夹(DCIM、下载等)?

我正在构建一个自定义 Marshmallow Android 版本,我想在第一次启动时向 SD 卡添加一些文件- 具体来说,我希望在创建 DCIM、下载、铃声等的同时创建它们。

默认文件夹结构是何时创建的?

android android-source android-sdcard android-6.0-marshmallow

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

如何从Android手机获取所有音乐文件的列表

我创建了一个应用程序来扫描手机上的音乐文件。如果我扫描文件夹/sdcard/Music,它会扫描音乐文件,但在我写入/sdcard时它不会扫描 mp3 文件。它工作正常。但它在某些设备上不起作用,应用程序崩溃可能是因为该手机上不存在该路径我该怎么办?

代码

public class SongsManager {

// SDCard Path
  String MEDIA_PATH = new String("/sdcard/Music");
 private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();

// Constructor
public SongsManager() {

}

/**
 * Function to read all mp3 files from sdcard
 * and store the details in ArrayList
 */ public ArrayList<HashMap<String, String>> getPlayList(){
       File home = new File(MEDIA_PATH);


    if (home.listFiles(new FileExtensionFilter()).length > 0) {
        for (File file : home.listFiles(new FileExtensionFilter())) {
            HashMap<String, String> song = new HashMap<String, …
Run Code Online (Sandbox Code Playgroud)

android audio-player android-music-player android-sdcard

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

拍照后更新画廊android相机应用程序失败

我正在构建一个Camera应用程序并在拍照后(在写入PictureCallback中的文件之后),我想更新设备上的媒体文件,因此我使用MediaScannerConnection(如下面的代码所示).但是,我无法在设备上的图库应用程序中查看图像.但是我可以在PC上查看图像(图像在SD卡上).我错过了什么吗?

MediaScannerConnection.scanFile(this, new String[] {pictureFile.toString()}, null, new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.d("ExternalStorage", "Scanned " + path + ":");
Log.d("ExternalStorage", "-> uri=" + uri);
}
});

camera android android-sdcard android-mediascanner

0
推荐指数
1
解决办法
1415
查看次数

保存在ASUS变压器SD卡上时,文件在Windows资源管理器中不可见

如果我在ASUS Transformer上运行以下代码,那么'testfile.txt'将按照预期在'sd card'目录的顶层创建.

private void testWriteFile () throws IOException
{
    File sdCard = Environment.getExternalStorageDirectory();
    File file = new File(sdCard, "testfile.txt");

    FileOutputStream myOutput = new FileOutputStream(file);
    byte buffer[] = {'0','1','2','3','4','5','6','7','8','9'};      

    myOutput.write(buffer,0,buffer.length);

    myOutput.flush();
    myOutput.close();
}
Run Code Online (Sandbox Code Playgroud)

我可以使用文件管理器应用程序在ASUS Transformer上查看该文件.我可以通过'adb shell'命令从Windows dos框中看到该文件,并且其权限似乎已正确设置.但是,如果我从Windows资源管理器中查看该目录,则"testfile.txt"不存在.我已经设置了显示隐藏文件和系统文件的选项,但没有运气.

如果我使用ASUS文件管理器应用程序更改"testfile.txt"的名称,则它在Windows资源管理器中可见,因此其他应用程序可以在资源管理器中显示文件.

如果我在ZTE Blade(Orange San Francisco)上运行相同的代码,那么我可以在Windows资源管理器中看到'testfile.txt'而无需更改其名称.

还有什么我需要做的来完成这个文件,以便它变得可见吗?

这里报告了一个类似的问题,除非我"强制关闭"应用程序,否则无法在sd-card上看到由Android应用程序编写的Windows中的文件,但在我的情况下强制关闭并不会使文件可见.

android windows-7 android-sdcard

0
推荐指数
1
解决办法
2302
查看次数

Android:SD卡验证

如何验证Sdcard是否可用?我的应用程序是保存一些语音到SD卡.如果没有存储卡意味着,我的应用程序将强行关闭.我不知道那段时间我能做些什么.有谁可以请,我如何在将数据保存到存储卡之前验证这一点.

更新

我已经找到了上面的这个,并得到了SO用户的好答案.现在,我想查看存储卡大小是否已满?我怎么能这样做?任何人指导我.

提前致谢.

android android-sdcard

0
推荐指数
1
解决办法
450
查看次数

Android应用程序可以在Nexus S上写入数据,但不能在"/ sdcard/filename"路径上的samsung S2上写入数据吗?

  1. 我已经给予了所需的许可: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  2. 将路径硬编码为"/sdcard/filename".

我猜Nexus没有外部SD支持但S2有,我认为这可能会导致路径出现问题.我该如何优雅地处理这样的案件?

android android-sdcard

0
推荐指数
1
解决办法
249
查看次数

getExternalStorageState() 显示“已安装”但仍无法创建文件夹

清单有

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
Run Code Online (Sandbox Code Playgroud)

应用程序设置,“存储”=修改/删除 SD 卡内容”在运行 2.3.5 的三星平板电脑和运行 2.3.4 的摩托罗拉 Droid 上结果相同。设备不依赖于开发机器。

代码如下:

public class OutputStudentRecords extends StActivity{
   SharedPreferences mStudentSettings;
    protected Cursor mCursor;
    boolean mExternalStorageAvailable = false;
    boolean mExternalStorageWriteable = false;

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.create_csv);

        String state = Environment.getExternalStorageState();
        Toast.makeText(getApplicationContext(),"State is " + state, Toast.LENGTH_LONG).show();

        if (!Environment.MEDIA_MOUNTED.equals(state)){
            //We can read and write the media
            mExternalStorageAvailable = mExternalStorageWriteable = true;
            Toast.makeText(getApplicationContext(), "We Can Read And Write ", Toast.LENGTH_LONG).show();
              File file = new File(Environment.getExternalStorageDirectory()
                     +File.separator
                     +"studentrecords"); //folder name
                     file.mkdir(); …
Run Code Online (Sandbox Code Playgroud)

android android-sdcard

0
推荐指数
1
解决办法
6041
查看次数

我们如何在android中的sdcard中写入现有文件(.txt)

我想编辑存储在SD卡上的.txt文件.在我的应用程序中,我必须编写用户活动数据.

因此,每当用户打开应用程序并执行某些操作时,都应使用新数据更新.txt文件.

file-io android android-sdcard

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

获取所有名称为 android 的存储和设备

我已经找到了如何使用以下任一答案获取所有存储:使用 proc/mounts使用 mount 命令,但现在我想在返回的路径上命名。我对内部存储没有问题,但是这些方法无法区分 SD 卡和 U 盘。如果它看到连接了两个驱动器,我如何确定哪个是 SD 卡,哪个是 USB,或者它们是两个 SD 卡?还是两个U盘?

usb android mount android-sdcard

0
推荐指数
1
解决办法
2669
查看次数

无权在SD卡上写入

我绝望地在我的代码中寻找错误,并且非常感谢sb可以帮助我.我正在尝试将图像保存到我的三星Galaxy Tab s2的SD卡中,但无论我使用什么代码,我似乎都无法对SD卡进行任何更改.

下面的代码段落表明,尽管清单发生了变化,但我无权在SD卡上写入数据.

是否有人有同样的问题或知道这里发生了什么?

(android:minSdkVersion ="19"; android:targetSdkVersion ="25")

码:

    File filepath = Environment.getExternalStorageDirectory();
    File dir = new File(filepath.getAbsolutePath() + "/SaveImage");

    MediaStore.Images.Media.insertImage(getContentResolver(), bmp ,"Image.jpg", "IMAGE");
Run Code Online (Sandbox Code Playgroud)

表现:

<manifest

xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ma.singhalja.saveimage">

<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application
Run Code Online (Sandbox Code Playgroud)

日志:

03-28 01:16:54.647 14292-14292/com.ma.singhalja.saveimage E/MediaStore: Failed to insert image
                                                                    java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=14292, uid=10141 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()
                                                                        at android.os.Parcel.readException(Parcel.java:1620)
Run Code Online (Sandbox Code Playgroud)

permissions android manifest save-image android-sdcard

-1
推荐指数
1
解决办法
1299
查看次数

如何解析SD卡中的几个文件并将接收到的数据插入数据库?

我在sdcard上有几个xml文件.如何解析每个xml文件并将接收到的数据插入数据库?

我收到文件夹中的文件名但不知道接下来会做什么和怎么做?

File sdPath = Environment.getExternalStorageDirectory();
File sdPathDr = new File(sdPath.getAbsolutePath() + "/" + "Android/data/" + getPackageName() + "/" + DIR_SD);

File[] files = sdPathDr.listFiles();
Run Code Online (Sandbox Code Playgroud)

如果可以请写代码样本.

xml文件的示例

 <row name="Rutracker">
 <col name="title_enter"> Rutracker </col>
 <col name="login_enter"> bmF6MsdghDEzvcgdghd </col>
 <col name="password_enter"> MXFhsejJ3c3g=sdfsdggd </col>
 <col name="link_enter"> http://www.rutracker.org </col>
 <col name="comment_enter"> </col>
 <col name="date_enter"> 15.02.2014 </col>
 </row>
Run Code Online (Sandbox Code Playgroud)

java database android xml-parsing android-sdcard

-3
推荐指数
1
解决办法
69
查看次数