根据此链接(How to programmatically take a screenshot in Android?),我使用答案进行捕获并将其保存在设备的外部存储器中。
我已清除所有权限,并根据日志,文件根本不为空。但我无法在图库或文件浏览器中找到该文件。
为什么会这样?有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
关于Rotwang,我已经弄清楚问题是什么了。
没有看到getExternalStorageDirectory()的路径返回要保存的文件的有效目录。
就我而言,它是关于保存用户在屏幕上查看的屏幕截图。
所以,我使用了Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES);代替。
因此,保存屏幕截图的完整代码如下所示。
private void takeScreenshot() {
Date now = new Date();
android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);
try {
File path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
File file = new File(path, now + ".jpg");
path.mkdirs();
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
//File imageFile = new File(mPath);
FileOutputStream outputStream = new FileOutputStream(file);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();
MediaScannerConnection.scanFile(this,
new String[] { file.toString() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.e("ExternalStorage", "Scanned " + path + ":");
Log.e("ExternalStorage", "-> uri=" + uri);
}
});
} catch (Throwable e) {
Log.e("Error", "Exception on TakeScreenshot", e);
}
}
再次感谢Rotwang。