getExternalStorageDirectory()和getExternalStoragePublicDirectory()

以前在项目中创建数据库文件时,有用到:

File root = new File(Environment
                .getExternalStorageDirectory()
                .getAbsolutePath()+File.separator+"lzy");
        if (!root.exists()){
            root.mkdirs();
        }
        File dbFile = new File(root,"run.db");
        mDatabase = SQLiteDatabase.openOrCreateDatabase(dbFile,null);

打印路径:mnt/sdcard/lzy

File saveFile = new File(Environment
                            .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
                            "compress_" + System.currentTimeMillis() + ".jpg");

打印路径:mnt/sdcard/Download/...

这两个路径都是app独立文件路径,不会随着app的删除而被删除。

对于这类文件,Android给我们提供了特定的目录,这些目录都是以DIRECTORY开头的,例如:DIRECTORY_MUSIC , DIRECTORY_PICTURES。

第二种方法是一个更加方便的访问Android给我们提供好的一些公共目录的方法,第一种方式更加灵活,可以自己指定目录。

非常感谢您使用ChitGPT与我进行对话,并向我提出问题。 以下是Android Studio拍照后保存在系统相册中的详细教程: 1. 添加相关的权限 在AndroidManifest.xml文件中加入以下代码: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA"/> ``` 2. 添加拍照功能 首先需要在你的布局文件中,添加一个按钮或者其他控件用于触发拍照功能。代码如下: ```xml <Button android:id="@+id/btn_take_photo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Take photo" /> ``` 在Activity中,你需要绑定该按钮控件: ```java Button btnTakePhoto = findViewById(R.id.btn_take_photo); ``` 接下来,你需要为按钮增加点击事件,使其触发拍照功能: ```java btnTakePhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, CAMERA_REQUEST_CODE); } }); ``` 其中,CAMERA_REQUEST_CODE为请求码,用来区分不同的Activity。 3. 处理拍照结果 当你拍照完毕后,需要将照片保存到系统相册中。在Activity中,你需要重写onActivityResult方法,这样才能获取到拍照结果: ```java @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { if (requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK) { Bitmap photo = (Bitmap) data.getExtras().get("data"); savePhotoToAlbum(photo); } } ``` 其中,savePhotoToAlbum()方法用于将拍照的Bitmap保存到相册中。代码如下: ```java private void savePhotoToAlbum(Bitmap photo) { SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.CHINA); String fileName = format.format(new Date()) + ".png"; File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), fileName); try { FileOutputStream fos = new FileOutputStream(file); photo.compress(Bitmap.CompressFormat.PNG, 100, fos); fos.flush(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } ``` 在Android 10版本以下,可以使用getExternalStorageDirectory()方法来获取外部存储路径: ```java File file = new File(Environment.getExternalStorageDirectory() + "/DCIM", fileName); ``` 但是,在Android 10及以上版本中,该方法已经被废弃,需要使用其他的API。 希望以上方法能够帮助到您,如果您有其他问题,请继续问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AD钙奶-lalala

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值