什么是Android中的intent-filters?

ank*_*nfo 57 android intentfilter android-intent

在我的Android应用程序中,我想从最初的活动'A'开始一个活动'B'.我已经为这两个创建了类.但是,当使用以下代码启动B时,我收到运行时错误:application has stopped unexpectedly, try again.这是我的代码:

Intent myIntent = new Intent(this, AddNewActivity.class);
startActivity(myIntent); 
Run Code Online (Sandbox Code Playgroud)

当我AndroidManifest.xml/manifest/application/activity/intent-filers为活动B 添加新条目时,应用程序工作.

我有两个问题:

  • 当有多个活动条目时AndroidManifest.xml,android如何知道首先启动哪个活动?
  • 我无法理解意图过滤器.任何人都可以解释.

这是我的偏爱 AndroidManifest.xml

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".ListAllActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".AddNewActivity" android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
Run Code Online (Sandbox Code Playgroud)

小智 73

意图过滤器是应用程序清单文件中的表达式,用于指定组件要接收的意图类型.

当您创建隐式intent时,Android系统会通过将intent的内容与设备上其他应用程序的manifest文件中声明的intent过滤器进行比较来找到适当的组件.如果intent与intent过滤器匹配,则系统启动该组件并将其传递给Intent对象.

AndroidManifest.xml中

<activity android:name=".HelloWorld"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="http" android:host="androidium.org"/>
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

启动HelloWorld

Intent intent = new Intent (Intent.ACTION_VIEW, Uri.parse("http://androidium.org"));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

  • 简单.清楚解释Intent过滤器的含义.这回答了这个主题的标题中的问题. (5认同)

Com*_*are 31

当AndroidManifest.xml中有多个活动条目时,android如何知道首先启动哪个活动?

没有"第一".在您的情况下,使用您显示的清单,您的启动器中将有两个图标.用户点击的任何一个是启动的.

我无法理解意图过滤器.任何人都可以解释.

关于这个主题有很多文档.请考虑阅读,然后提出更具体的问题.

此外,当您"意外停止应用程序,再试一次"时,请使用adb logcatEclipse中的DDMS或DDMS透视图来检查与错误关联的Java堆栈跟踪.