讨论Android安全提出的一个问题,我们找不到合理的答案(也许是天真的问题):
在Application Manifest上找到的示例: package =“com.google.android.youtube” 应用程序:android:name =“com.google.android.apps.youtube.app.YouTubeApplication” Receiver:android:name =“com.google.android.apps.youtube.core.player.notification.ExternalPlaybackControllerV14 $ RemoteControlIntentReceiver” 机器人:导出= “真”
答案 0 :(得分:2)
您给出的示例的解释非常简单。您给出的示例是BroadcastReceiver
组件。该组件具有android:exported="true"
,因此可以从应用程序外部的其他组件调用它。这种用法的一个很好的例子是AlarmManager
。如果应用程序要使用AlarmManager
设置闹钟,则AlarmManager
在闹钟响起时调用的组件必须公开。原因是AlarmManager
必须能够启动组件,即使您的应用程序没有运行。要做到这一点,组件必须在清单中声明,并且必须是公开可用的(即:“android:exported =”true“)。
通常,只要您的应用程序创建显式Intent
,然后将此Intent
(使用PendingIntent
)传递给应用程序外部的另一个组件,该组件就必须公开发布。
您要求提供代码示例。另一个应用程序可以触发您在示例中给出的BroadcastReciever
组件,如下所示:
Intent intent = new Intent();
intent.setClassName("com.google.android.youtube",
"com.google.android.apps.youtube.core.player.notification.ExternalPlaybackControllerV14$RemoteControlIntentReceiver");
sendBroadcast(intent);
希望这能解答您的所有问题。