Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当用户不使用';我没有SD卡_Android_File_Android Camera - Fatal编程技术网

Android 当用户不使用';我没有SD卡

Android 当用户不使用';我没有SD卡,android,file,android-camera,Android,File,Android Camera,我有一个可以从相机拍摄照片的应用程序,但当用户将内部存储设置为默认值时,我的外部存储有问题 当我检查外部存储器上的可用空间时,它返回0字节的可用空间,但内部存储器有10GB的可用空间。这是我的密码 Intent takePictureIntent = new Intent( MediaStore.ACTION_IMAGE_CAPTURE); StatFs stat = new StatFs(Envi

我有一个可以从相机拍摄照片的应用程序,但当用户将内部存储设置为默认值时,我的外部存储有问题

当我检查外部存储器上的可用空间时,它返回0字节的可用空间,但内部存储器有10GB的可用空间。这是我的密码

                Intent takePictureIntent = new Intent(
                    MediaStore.ACTION_IMAGE_CAPTURE);

            StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
            double sdAvailSize = (double)stat.getAvailableBlocks()
                               * (double)stat.getBlockSize();

            if(!Utils.isExternalStorageWritable()) {
                Toast.makeText(AddActivity.this, R.string.external_storage_not_available, Toast.LENGTH_LONG).show();
            }
            else if(sdAvailSize / 1024L >  10000) {
                Toast.makeText(AddActivity.this, R.string.not_enough_free_space, Toast.LENGTH_LONG).show();
            }
            else {

                File exportDir = new File(Environment.getExternalStorageDirectory()
                        .getAbsolutePath() + APP_PATH_SD_CARD, "");

                if (!exportDir.exists()) {
                    exportDir.mkdirs();
                }

                imagePath = Calendar.getInstance().getTimeInMillis() + ".jpg";
                final File file = new File(exportDir, imagePath);

                try {
                    file.createNewFile();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                 // Create the storage directory if it does not exist
                if (! file.exists()){
                    Log.d("App", "failed to create directory");
                }

                System.out.println("Dir exists: " + exportDir.exists());
                System.out.println("File exists: " + file.exists());

                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                        Uri.fromFile(file));
                startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
            }
当我没有检查可用空间并启动拍照活动时,我可以拍照,但“确定”按钮不起作用

当用户没有SD卡时,存储图像文件的最佳方式是什么


提前感谢。

我在这里发布了一个用于获取存储目录的代码:


我用它来创建新文件,它可以使用SD卡,也可以不使用SD卡。

我想这里有两个外部存储器。第一个在手机上,第二个在SD卡上,但当我手机上没有可用空间时,我如何在SD卡上存储照片?我发布的代码,首先尝试获取SD卡,然后如果失败,它将获取手机存储。我尝试了你的解决方案,但它对我无效。顺便说一句,我不能使用缓存目录来存储我以后需要的文件。你能发布日志吗?发生了什么事?为什么不能将缓存目录用于以后的文件使用?我用了很多应用程序。此外,如果你想,你可以选择一个不同的目录?