1.今天做了個(gè)小需求,實(shí)現(xiàn)截屏總是出現(xiàn)崩潰問(wèn)題
是因?yàn)樵谙旅娴姆椒ㄖ?/p>
private void snapCurrentWindow() {
int width = DimensionUtil.getWidth(this);
int height = DimensionUtil.getHeight(this);
Log.e("截屏功能", "snapCurrentWindow: " + width + height);
bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
View screenView = getWindow().getDecorView();
screenView.setDrawingCacheEnabled(true);
bitmap = screenView.getDrawingCache();
//先判斷權(quán)限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(LoginActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission(LoginActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ) {
ActivityCompat.requestPermissions(LoginActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
return;
}else {
saveImageToGallery(this, bitmap);
}
}else {
saveImageToGallery(this, bitmap);
}
Log.d(TAG, "snapCurrentWindow: 000" + bitmap + "width" + width + "height" + height );
// saveImageToGallery(this, bitmap);
}
1.閃退報(bào)錯(cuò): getWindow().getDecorView() 為null
2.保存到相冊(cè)败京,日期沒(méi)有同步
報(bào)錯(cuò)原因:是因?yàn)閷?shí)在onCreate()方法里面,還沒(méi)初始化化完成涩哟,導(dǎo)致獲取不到
解決方法:不在onCreate()方法里執(zhí)行
下面是方法:
/**
保存截屏到相冊(cè)
@param context
-
@param bmp
*/
public void saveImageToGallery(Context context, Bitmap bmp) {// 首先保存圖片
String storePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "Wancms" + File.separator;
File appDir = new File(storePath);
if (!appDir.exists()) {
appDir.mkdir();
}
String fileName = "Screenshot_" + System.currentTimeMillis() + ".jpg";
File file = new File(appDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}// 其次把文件插入到系統(tǒng)圖庫(kù)
try {
String uriString = MediaStore.Images.Media.insertImage(context.getContentResolver(), file.getAbsolutePath(), fileName, null);
File file1 = new File(getRealPathFromURI(Uri.parse(uriString), context));
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file1)));
Toast.makeText(LoginActivity.this, "已保存到相冊(cè)", Toast.LENGTH_SHORT).show();} catch (FileNotFoundException e) {
Toast.makeText(LoginActivity.this, "保存失敗", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
//得到絕對(duì)地址
private static String getRealPathFromURI(Uri contentUri,Context context) {
String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String fileStr = cursor.getString(column_index);
cursor.close();
return fileStr;
}
getRealPathFromURI() 這個(gè)方法就能完美的解決相冊(cè)日期沒(méi)有 同步的問(wèn)題了