当前位置: 首页 > 知识库问答 >
问题:

我正在学习java。木卫一。尝试捕获屏幕时出现FileNotFoundException

谭裕
2023-03-14

我已在我的Android清单文件中的应用程序标记之外设置了所有使用权限设置:

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

但是当我尝试捕捉屏幕时,我收到以下错误:

JAVA木卫一。FileNotFoundException:/storage/simulated/0/DCIM/Camera/EMOJI_2-7-116_22538。jpg:打开失败:EACCES(权限被拒绝)

这是捕获屏幕的方法。

private void captureScreen() {
        Date now = new Date();
        now.getYear();
        now.getMonth();
        now.getDay();

        View v = findViewById(R.id.rl);
        v.setDrawingCacheEnabled(true);
        Bitmap bitmap = v.getDrawingCache();
        String dest = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
                + File.separator + "Camera" + File.separator + "EMOJI_" +
                now.getDay() + "-" + now.getMonth() + "-" + now.getYear() + "_" + now.getHours() + now.getMinutes() + now.getSeconds() + ".jpg";
        File file = new File(dest);
        try {
            FileOutputStream stream = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
            stream.flush();
            stream.close();
            Toast.makeText(getApplicationContext(), "Saved !", Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            Toast.makeText(getApplicationContext(), "An error occured", Toast.LENGTH_LONG).show();
        } finally {
            v.setDrawingCacheEnabled(false);
        }

        // Scan the image to make it appear in gallery
        MediaScannerConnection.scanFile(this, new String[]{file.getPath()}, new String[]{"image/jpeg"}, null);
    }

帮我如何解决这个问题?

共有3个答案

长孙谦
2023-03-14

这样试试

File sd = Environment.getExternalStorageDirectory();
File image = new File(sd+filePath, imageName);
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeFile(image.getAbsolutePath(),bmOptions);
bitmap = Bitmap.createScaledBitmap(bitmap,parent.getWidth(),parent.getHeight(),true);
imageView.setImageBitmap(bitmap);

可能对你有充分的帮助。

萧展鹏
2023-03-14

您正试图访问系统上当前不存在的文件。

而是使用。。

OutputStream out = new FileoutputStream(dest);

//这次用字符串对象而不是文件对象实例化FileOutputStream对象

朱令
2023-03-14

如果您的targetSdkVersion为23或更高,您还需要在运行时请求WRITE\u EXTERNAL\u STORAGE权限。

 类似资料:
  • 停止应用程序后,我遇到错误。如何解决此问题?对于生产,我使用端口3000,用于开发4200。 [HPM]尝试代理请求/socket.io/?EIO=3时出错 我的女儿。conf如下所示: proxy.conf.json

  • 我试图根据用户输入的坐标捕捉区域截图。基本上,用户在屏幕上点击得到x,y坐标,然后在其他地方点击另一对x,y坐标,然后将其放入一个矩形中,并使用机器人库创建屏幕截图。 我有的问题是,我得到了随机截图,这不是用户输入的坐标,我怎么能考虑包括0的坐标,因为矩形值必须超过1。 以下是我迄今为止的代码:

  • 问题内容: 您可以尝试/捕获Java中的堆栈溢出异常吗?它似乎在向任一方向投掷自己。当程序溢出时,我想“惩罚”该值。 问题答案: 似乎可以工作:

  • 问题内容: 我想找出一个如何使用Java捕获截屏视频。我知道使用Robot类可以获取屏幕截图,但是如何将其捕获为视频并将其上传到服务器呢?那将如何工作? 想法? 问题答案: 使用纯Java解决方案,我怀疑它是否会起作用,但这当然取决于您对“视频”的解释。 在分辨率为1920x1200的台式机上,使用Java Robot捕获整个屏幕时,每秒可以获取约20帧。由于每个图像都包含> 6 MB的未压缩数据

  • 我一直试图实现启动屏幕到我的应用程序的帮助下,许多代码可以在网站上使用,但没有一个为我工作。每次应用程序崩溃后显示启动屏幕3秒。我不知道哪里出错了,请更正我的代码,以正确显示闪屏!谢谢! //这是我的主要活动

  • 我正在尝试使用Python 3.6(在Windows 10上)的保存一个网站的屏幕截图。当我使用或函数时,总会出现以下异常: WebDriver异常:未知错误:无法从未知错误中获得自动化扩展:无法找到页面:chrome-扩展://aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html (会话信息:chrome=60.0.31