如何将图像保存到内部存储器

时间:2017-08-16 08:43:16

标签: java android

我正在创建一个移动应用,定期进行屏幕截图。然后将通过MMS检索并发送图像。

我的问题是我使用Android 7.0的Galaxy S6边缘,因此没有存储卡。该程序在带有存储卡的kitkat手机上运行,​​但不适用于S6 Galaxy。

如何将图像存储在内部存储器中? 访问MMS应用程序的路径是什么?

谢谢

1 个答案:

答案 0 :(得分:0)

在您的清单文件中提供以下权限

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

在java文件中提供运行时权限:

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, EXTERNAL_PERMISSION_CODE);
}
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, READ_PERMISSION_CODE);
}

将图像保存到内存/ SD卡的方法

(当你尝试写入设备的外部存储器时,首先android尝试在设备上找到已安装的SD卡并写入。如果,SD卡不可用,则数据将写入设备的内部存储器中:< / p>

    private void saveImageToLog(){
    String timeStampString = Calendar.getInstance().get(Calendar.MILLISECOND);
    File appDirectory = new File( Environment.getExternalStorageDirectory() + "/MyAppImageLog" );
    File photo = new File(appDirectory, "photo_" + timeStampString+ ".png");

    if ( !appDirectory.exists() ) {
        appDirectory.mkdir();
    }

    if (photo.exists()) {
        photo.delete();
    }

    try {
        Bitmap bmp = bitmapImage;
        FileOutputStream fos = new FileOutputStream(photo.getPath());
        bitmapImage.compress(Bitmap.CompressFormat.PNG, 0, fos);
        fos.flush();
        fos.close();
    }catch (Exception e){
        e.printStackTrace();
        Log.v("log_tag", e.toString());
        testInvalid = "";
    }
}