Articles of android sdcard

Android – 在SD卡上安装App时的内部存储与外部存储

我有一个下载大量内容的应用程序(它在用户之间有所不同,但可能是200mb到1GB或更多)。 目前,我将所有这些内容保存在外部存储上,因为这可能是空间最大的区域,例如SD卡。 这在大多数情况下都可以正常工作,但是这种情况并不一定是理想的。 如果设备具有内置的外部存储设备(如大多数平板电脑),但也有SD卡插槽,则外部存储问题会变得有点复杂。 该应用程序可以安装到SD卡上,但内容将保存在内置存储中,而不是外部SD卡中。 如果应用程序安装在SD卡上,调用getFilesDir()会在SD卡或内部存储器上给出路径吗? 处理这个问题的最佳方法是什么? 我应该将内容保存到内部存储(在SD卡上),外部存储器还是在启动应用程序时询问用户最好的想法?

无法在Android模拟器中写入SD卡

我在AndroidManifest.xml中添加了这一行: 但是,当我运行代码写入SD卡时,我收到此错误: 02-19 13:24:46.760: E/CameraTest(598): /mnt/sdcard/image.jpg: open failed: EACCES (Permission denied) 我该如何解决这个问题? 编辑:我正在使用添加了SDCard的Android模拟器。 编辑-2:我知道现在的问题是:我已经调用了函数Environment.getExternalStorageState()并且我被“删除”了。 任何人都知道如何解决这个问题并使状态为MEDIA_MOUNTED 谢谢!

适用于Android的外部SDCard文件路径

Android设备上外部SDCard的文件路径始终是“/ storage / extSdCard”吗? 如果没有,有多少变化? 我的App需要它来测试外部 SD卡的可用性。 我正在使用Titanium,它有一个方法Titanium.Filesystem.isExternalStoragePresent()但它总是返回true,即使没有安装外部SDCard。 我认为它在本地存储中检测到SDCard因此返回true。 但我真正想要的是检测物理SD卡是否已安装。 我可以通过单独检测文件“/ storage / extSdCard”的存在来做到这一点吗? 谢谢。

获取Android上的所有总空间和可用空间

据我所知,在Android上,有: 应用和缓存的内部存储器 某些手机​​上的内置SD卡(不可拆卸) 用于音乐和照片的外置SD卡(可移动) 我如何获得每个的总数和可用数量,并检查它们是否存在(某些手机没有内部SD卡) 谢谢

保存到SD卡作为文本文件

stopWriting = (Button) findViewById(R.id.save); stopWriting.setOnClickListener(new OnClickListener() { @SuppressLint(“SdCardPath”) public void onClick(View v) { // stop recording the sensor data try { myFile = new File(“/sdcard/SensorData/” + txtData.getText() + “.txt”); myFile.createNewFile(); sData = new FileOutputStream(myFile); myOutWriter = new OutputStreamWriter(sData); myBufferedWriter = new BufferedWriter(myOutWriter); myPrintWriter = new PrintWriter(myBufferedWriter); //if(myFile != null )//stopFlag = mSensorManager.cancelTriggerSensor(null, null); Toast.makeText(getBaseContext(), “Done”, […]

强制访问外部可移动microSD卡

我正在使用三星A3,Android 5.0.2。 我正在使用此设置来编译应用程序,即Android 4.1 Jelly Bean(API 16)目标。 我确切地知道外部可移动microSD卡的路径,它是/mnt/extSdCard/ (参见下面的注释#7)。 问题:我注意到了 File myDir = new File(“/mnt/extSdCard/test”); myDir.mkdirs(); 不起作用:没有创建目录。 也: File file = new File(“/mnt/extSdCard/books/test.txt”); // the folder “books” already exists on the external microSD card, has been created from computer with USB connection FileOutputStream fos = new FileOutputStream(file); 产生此错误: java.io.FileNotFoundException:/mnt/extSdCard/books/test.txt:open failed:libcore.io.IoBridge.open中的EACCES(权限被拒绝)(… 如何强制读取+写入外部可移动microSD卡? 笔记: Environment.getExternalStorageDirectory().toString()给出/storage/emulated/0这是我的手机内部存储,即不是我想要的。 getExternalFilesDir(null)给出/storage/emulated/0/Android/data/com.blahblah.appname/files/即不是我想要的。 请注意,我不能将getExternalFilesDirs与final […]

观察Audio.Media.EXTERNAL_CONTENT_URI的Android内容观察者的更改

我正在开发一个Android应用程序,我必须检测Android SD卡中音频文件的变化,文件名,文件路径和执行的操作。 例如,如果我在SD卡中添加文件,那么我想知道 添加的文件的名称 文件的路径 操作 – 添加 以前我已经尝试过文件观察器但是为此我必须在每个目录上应用它。 所以我搜索了一些其他解决方案并获得了有关Audio.Media.EXTERNAL_CONTENT_URI的信息。 然后我创建了一个像这样的内容观察者 UriObserver.java – 这是一个内容观察者 class UriObserver extends ContentObserver { public UriObserver(Handler handler) { super(handler); // TODO Auto-generated constructor stub } @Override public void onChange(boolean selfChange) { // TODO Auto-generated method stub super.onChange(selfChange); Log.d(“INSTANT”, “GETTING CHANGES”); } } 这是注册的代码 UriObserver observer = new UriObserver(new Handler()); Log.d(“INSTANT”, […]

除非我“强制关闭”应用程序,否则无法在sd-card上看到由Android应用程序编写的Windows中的文件

我通过我的Android程序写了一个文件,如下所示: String file = Environment.getExternalStorageDirectory().getAbsolutePath() + “/Files/hello.txt”; BufferedWriter writer = new BufferedWriter(new FileWriter(file)); writer.write(str+”\n”); \\yeah str has a value there writer.close(); 该程序完成其工作并完成。 现在我点击Android上的后退按钮关闭应用程序。 现在发生的事情是,如果我去Android文件浏览器(如Astro)我可以看到该文件,但如果我在Windows上安装SD卡,我看不到该文件! 现在,如果我转到Settings > Applications > Manage Applications > “Force Stop” 我甚至可以在Windows中看到该文件。 我该怎么做才能在Windows中看到一个文件,如果该文件是由我的Android应用程序在SD卡上写的,我不想每次都去设置并强制关闭。 实际上文件写得正确(我认为),但由于Android’后退’按钮的默认行为不会杀死应用程序,看起来除非应用程序被杀,否则我无法在Android外打开文件(在Android中) ,我仍然可以看到它甚至打开它)。 那么,对于这种情况,什么是最好的解决方案。 我应该在关闭时自动杀死应用程序吗? 人们说严格不建议使用System.exit()。

使用Android原生相机停止保存照片

我使用原生Android相机并将文件保存到我的应用程序数据文件夹(/mnt/sdcard/Android/data/com.company.app/files/Pictures/)。 同时,其他照片副本保存到DCIM文件夹。 这是我的代码: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); String formattedImageName = getDateString() + “.jpg”; File image_file = new File(this.getExternalFilesDir(Environment.DIRECTORY_PICTURES), formattedImageName); Uri imageUri = Uri.fromFile(image_file); intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri); startActivityForResult(intent, REQUEST_FROM_CAMERA); 如何防止将其他图像副本保存到DCIM文件夹? 非常感谢

SD卡上的SQLite数据库

我想在SD卡上创建一个sqlite数据库(不想用尽用户的内部存储)。 我熟悉OpenHelper模式: public DatabaseFoo(Context context) { OpenHelper openHelper = new OpenHelper(context); mDb = openHelper.getWritableDatabase(); } private static class OpenHelper extends SQLiteOpenHelper { public OpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } … 所以,如果我们想在SD卡上创建,我认为我们必须使用: public static SQLiteDatabase openOrCreateDatabase (String path, SQLiteDatabase.CursorFactory factory); 但是什么是“工厂”的论点应该是什么,应该使用什么工厂? 还有点担心如果用户在我的应用程序正在使用时删除SD卡会发生什么。 谢谢