【问题标题】:How to refresh a gallery after capturing a screenshot?截屏后如何刷新图库?
【发布时间】:2023-12-28 11:07:02
【问题描述】:

我正在开发一个使用BroadcastReceiver 截屏的应用程序。在onReceive 方法中,我截取屏幕截图并将其保存在Screenshot/ 目录中。问题是我可以在文件夹中看到屏幕截图,但在画廊中看不到它。也许是因为画廊没有刷新?我尝试在我的BroadcastReceiver 中使用MediaScanner 类或sendBroadcast 方法,但由于应用程序崩溃,它不起作用。

保存图片后如何刷新图库?

【问题讨论】:

  • 您可以发布您用于 MediaScanner 的代码吗?另外,当应用程序崩溃时,日志会说什么?
  • MediaScannerConnection.scanFile(context, new String[] { file.toString() }, null, new MediaScannerConnection.OnScanCompletedListener() { public void onScanCompleted(String path, Uri uri) { Log.i( "ExternalStorage", "扫描的" + path + ":"); Log.i("ExternalStorage", "-> uri=" + uri); } });
  • 当应用程序崩溃时日志显示:java.lang.RuntimeException: Unable to start receiver com.example.projet: android.content.ReceiverCallNotAllowedException: BroadcastReceiver 组件不允许绑定到服务
  • 当我尝试使用 sendBroadcast 方法时,我收到权限拒绝错误

标签: android android-studio broadcastreceiver screenshot development-environment


【解决方案1】:

试试这个方法。它不应该有权限问题。

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, fileUri));

【讨论】:

  • 非常感谢布莱恩。它工作正常。我忘了放正确的fileuri