Ank*_*agi 15 java eclipse android android-manifest
有人可以解释清单中的以下行 -
<activity
android:name=".AboutUs"
android:label="@string/app_name">
<intent-filter >
<action android:name="com.example.app1.ABOUT" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
活动和意图过滤器中的字段如何重要以及何时使用/引用?对不起,我试图阅读文档,但仍然无法想象.
谢谢
Foa*_*Guy 20
android:name=".AboutUs"
Run Code Online (Sandbox Code Playgroud)
这是您的Activity类的名称,前面的点是您的包的简写表示法.所以这实际上代表了com.your.package.name.AboutUs哪个意味着你的java文件代表这个Activity被调用AboutUs.java
android:label="@string/app_name"
Run Code Online (Sandbox Code Playgroud)
label是启动器中显示的字符串(如果活动在启动器中列出),并且在活动打开时位于窗口顶部.
<intent-filter > ... </intent-filter>
Run Code Online (Sandbox Code Playgroud)
intent filter定义您的活动"侦听"的Intents以便启动.
<action android:name="com.example.app1.ABOUT" />
<category android:name="android.intent.category.DEFAULT"/>
Run Code Online (Sandbox Code Playgroud)
操作和类别都是在Intent被"触发"进入系统之前在Intent上设置的字段.然后,系统将查找与操作和类别相匹配的任何活动,如果找到,则会启动该活动,或者如果找到多个,它将向用户显示所有这些活动并让他们选择.
在您的情况下,您正在侦听的com.example.app1.ABOUT操作是特定于您的应用的自定义操作,而不是系统操作之一.
所以这是启动此特定活动的意图可能如下所示:
Intent i = new Intent();
i.setAction("com.example.app1.ABOUT");
i.addCategory("android.intent.category.DEFAULT");
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
请注意,因为您已经创建了自定义操作,AboutUs.class所以此意图不需要访问您的意图,因此技术上可以从设备上的任何应用程序触发此意图,它将启动到您的活动中.