Java 当应用程序在安装了操作\媒体\的情况下使用sendBroadcast时,它会失去焦点

Java 当应用程序在安装了操作\媒体\的情况下使用sendBroadcast时,它会失去焦点,java,android,media,Java,Android,Media,我有一个应用程序,它一开始就发送一个广播,这样它就可以有一个可用图像的刷新列表。直到今天(至少在那时我注意到了这一点),这一切都很好 它仍然会启动,但只要调用intent,焦点就会转移到主屏幕应用程序(默认或替换),并且不会返回。我还没有注意到我的安卓手机是更新了还是其他什么 这是引起我麻烦的原因: sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalS

我有一个应用程序,它一开始就发送一个广播,这样它就可以有一个可用图像的刷新列表。直到今天(至少在那时我注意到了这一点),这一切都很好

它仍然会启动,但只要调用intent,焦点就会转移到主屏幕应用程序(默认或替换),并且不会返回。我还没有注意到我的安卓手机是更新了还是其他什么

这是引起我麻烦的原因:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
我做错什么了吗?

就像@User117说的那样

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
我的应用程序可能不应该使用它。我找不到专门告诉程序员不要使用这种广播的文档,但正如他指出的那样,安卓操作系统的实现通常应该很好地跟踪现有的项目,特别是如果有性能良好的应用程序辅助的话

最后,我从我的应用程序中删除了这个呼叫

就像@User117所说的

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
我的应用程序可能不应该使用它。我找不到专门告诉程序员不要使用这种广播的文档,但正如他指出的那样,安卓操作系统的实现通常应该很好地跟踪现有的项目,特别是如果有性能良好的应用程序辅助的话


最后,我从我的应用程序中删除了这个呼叫

这是一个系统意图的操作,我认为您不应该从应用程序中发送它。为什么您认为这适用?文档()没有告诉我它是受限的,意图不是受限的,动作是受限的。如果你的应用程序实际上没有卸载/挂载android分区,它不应该通过发送该意图来混淆其他应用程序。假设启动器(主屏幕应用程序)监听此意图,并删除/添加安装在sd卡上的应用程序图标。此广播将导致launcher在没有任何实际需要的情况下刷新其应用程序列表。Ok。我只是在使用我在这里找到的代码()。但是,您建议我如何强制系统触发媒体重新扫描?如果我不触发,当我显示图像时,Android的gallery无法正确显示媒体的当前状态。媒体扫描仪设计为自动工作,如果不工作,可能是安装问题。您只需拨打电话,要求MediaScanner扫描文件即可。您甚至可以在循环中为文件夹中的所有文件运行它。一个表现良好的应用程序在创建内容时总是可以通知MediaScanner。这是一个系统意图的行为,我认为你不应该从应用程序中发送。你认为这适用于什么?文档()没有告诉我它是受限的,意图不是受限的,动作是受限的。如果你的应用程序实际上没有卸载/挂载android分区,它不应该通过发送该意图来混淆其他应用程序。假设启动器(主屏幕应用程序)监听此意图,并删除/添加安装在sd卡上的应用程序图标。此广播将导致launcher在没有任何实际需要的情况下刷新其应用程序列表。Ok。我只是在使用我在这里找到的代码()。但是,您建议我如何强制系统触发媒体重新扫描?如果我不触发,当我显示图像时,Android的gallery无法正确显示媒体的当前状态。媒体扫描仪设计为自动工作,如果不工作,可能是安装问题。您只需拨打电话,要求MediaScanner扫描文件即可。您甚至可以在循环中为文件夹中的所有文件运行它。行为良好的应用程序在创建内容时总是可以通知MediaScanner。