2013-02-06 58 views
1

我有一个应用程序,它在启动后立即发送广播,因此它可以刷新可用的图像列表。这工作得很好直到今天(至少在我注意到这一点的时候)。当它使用sendBroadcast和ACTION_MEDIA_MOUNTED时,应用程序失去焦点

它仍然启动,但一旦它调用意图,焦点将转移到主屏幕应用程序(默认或替换),并且不会返回。我没有注意到我的Android手机是否已更新或其他。

这是导致我的麻烦线路:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory()))); 

我错了在这里做什么?

+0

这是一个系统意图行动,我不认为你应该从你的应用程序发出它。 –

+0

你为什么认为这适用?文档(http://developer.android.com/reference/android/content/Context.html#sendBroadcast(android.content.Intent))并不告诉我它是受限制的。 – DigCamara

+1

意图不受限制,行动是。如果你的应用程序没有真正卸载/挂载Android分区,它不应该通过发送该Intent来混淆其他应用程序。假设启动器(主屏幕应用程序)监听此意图,并删除/添加安装在SD卡上的应用程序的图标。此广播将导致启动器刷新其应用程序列表,而没有任何实际需要。 –

回答

1

像@ User117说,

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory()))); 

可能不应该由我的应用程序使用。我找不到能够明确告诉程序员不要使用这种广播的文档,但正如他指出的那样,Android操作系统的实现通常应该保持对现有项目的良好跟踪,特别是如果它得到良好行为的应用程序的帮助。

最后,我消除了来自我的应用程序的电话。

相关问题