Luc*_*uke 24 java android android-intent
有人可以解释一下Intent类别的目的吗?我什么时候应该自己制作等等?Intent我书中关于类别的唯一内容是他们可以分组意图吗?
Luk*_*uth 39
该类别的单独是无用的,它们被用来描述一个可能的目标为"隐含意图"在intent-filter.
当你知道你要启动和使用哪个类/活动startActivity()或者startActivityForResult(),这就是所谓的"明确意图".
这是隐式意图如何工作的类比:
想象一下,你所有的应用程序都坐在一个大房间里,什么都不做.然后,另一个应用程序,比如Dropbox,需要有人打开PDF文件.Dropbox应用程序进入系统并说"嘿,有人需要打开这个PDF文件..."(这是发送隐含的意图).
系统现在进入房间并大喊"你们哪一个可以显示PDF文件?".可以站起来并且系统看到它们的应用程序(这些应用程序具有匹配意图类别的活动).
然后它会为您提供一个对话框,您可以在其中选择一个应用程序:
如果您想在应用程序范围之外使用某些Activity/BroadcastReceivers/Services,可以使用Android Manifest向其声明"intent filter",以便在系统或应用程序启动"隐式"时打开它意图"匹配.
你这样做(例如)应该从启动器打开的Activity:
<activity android:name=".SomeActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
这会侦听ACTION_MAINAndroids Launcher(CATEGORY_LAUNCHER)触发的-action .
您的"intent filter"中有两个子元素:
action.这指定了"intent filter"应该监听的操作.category.这指定了如何调用活动.其中一个category可以(例如)android.intent.category.DEFAULT,它告诉Activity在全屏模式下正常启动.该android.intent.category.TAB例如-category声明此活动作为一个标签TabActivity,所以它只能被打开的选项卡.
另一个例子是添加android.intent.category.PREFERENCE-category,它会将活动声明为您的Settings-Activity.
声明自己category的既不可能也不必要.
此外,您还需要了解这些事件是由系统/另一个应用程序触发的,您只能指定触发时是否以及如何做出反应.