有关<intent-filter>标签及其嵌套标签</intent-filter>的问题

时间:2013-06-08 01:08:54

标签: java android android-intent launcher


我正在阅读一个Android指南,我已经到了解释标签的地方,并说它打字 <action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER">

我将我的活动作为主要活动。 我的问题如下:是否有可能在我的源代码中做同样的事情,就像在java中键入一些东西(public void main(...))一样,我的编译器理解这是我的主要活动? 第二个问题非常笼统,是否可以使用我的源文件在xml中完成所有操作?

2 个答案:

答案 0 :(得分:1)

意图过滤器

系统使用Intent过滤器来尝试查找可以接收系统试图解析的意图的已安装的应用程序组件,即当Intent没有指定要定位的特定组件类时。例如,如果你这样做......

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivity(intent);

系统没有明确指示要启动的Activity(或Service,或BroadcastReceiver)。它必须找到一些能够解析Intent的组件,并使用声明的<intent-filter>来执行此操作。通常,能够捕获图像的应用程序(如相机应用程序)将声明其活动处理此操作。

当您点击应用的启动器图标时,启动器基本上会创建一个Intent,如下所示:

Intent mainIntent = new Intent(Intent.ACTION_MAIN);
mainIntent.setCategory(Intent.CATEGORY_LAUNCHER);
mainIntent.setPackage(/* your package */);
startActivity(mainIntent);

结果是系统尝试使用指定<intent-filter><action android:name="android.intent.action.MAIN" />的{​​{1}}在该包中查找组件。

简而言之,它与Java中典型<category android:name="android.intent.category.LAUNCHER">的存在完全无关。

<强> XML

当系统在运行时加载XML文件(如布局文件)时,它实际上是根据通过解析文件找到的信息创建Java对象。使用布局作为示例,所有不同的XML标记(例如public static void main())都具有相应的java类(<ImageView>),并且您可以使用公共方法设置可以使用XML属性设置的大多数属性在那些观点上。

如果您如此倾向,可以通过自己实例化并使用android.widget.ImageView方法完全用Java构建Activity的布局,这基本上就是系统为您做的事情:

set[Property]()

XML drawables也会发生类似的事情,尽管用Java创建它们有点不同。

简而言之,你可以用XML做的许多事情也可以用Java做,但是它有缺点(例如,你失去了操作系统提供的自动资源处理)。

答案 1 :(得分:0)

1时,无

2,Android.manitest文件是一个描述文件,告诉系统你的应用程序属性。这不能被Java代码取代。

3,一些资源文件可以用你的Java代码替换,但我认为使用java代码替换xml文件并不是一个好主意。它是用MVC设计的