我正在创建一个移动应用,定期进行屏幕截图。然后将通过MMS检索并发送图像。
我的问题是我使用Android 7.0的Galaxy S6边缘,因此没有存储卡。该程序在带有存储卡的kitkat手机上运行,但不适用于S6 Galaxy。
如何将图像存储在内部存储器中? 访问MMS应用程序的路径是什么?
谢谢
答案 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 = "";
}
}