Android中的意图过滤器是什么?
在我的android应用程序中,我想从初始活动“A”开始一个活动“B”。我已经为这两个类创建了类。但是,当使用以下代码启动B时,出现运行时错误:Android中的意图过滤器是什么?,android,android-intent,intentfilter,Android,Android Intent,Intentfilter,在我的android应用程序中,我想从初始活动“A”开始一个活动“B”。我已经为这两个类创建了类。但是,当使用以下代码启动B时,出现运行时错误:应用程序意外停止,请重试。这是我的密码: Intent myIntent = new Intent(this, AddNewActivity.class); startActivity(myIntent); 当我在活动B的AndroidManifest.xml/manifest/application/activity/intent filers中添
应用程序意外停止,请重试。这是我的密码:
Intent myIntent = new Intent(this, AddNewActivity.class);
startActivity(myIntent);
当我在活动B的AndroidManifest.xml/manifest/application/activity/intent filers
中添加一个新条目时,应用程序工作了
我有两个问题:
- 当
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>
当有多个活动时
AndroidManifest.xml中的条目,如何
安卓是否知道要进行哪些活动
先开始
没有“第一”。在您的情况下,清单如图所示,您的启动程序中将有两个图标。无论用户点击哪一个,它都会被启动
我不能理解你的意图。
谁能解释一下吗
有相当多的问题。请考虑阅读,然后问更具体的问题。< /P>
此外,当您得到“应用程序意外停止,请重试”时,请使用adb logcat
,DDMS,或Eclipse中的DDMS透视图,以检查与错误相关的Java堆栈跟踪。使用键MAIN
和LAUNCHER
保留第一个意图过滤器,并添加另一个作为任意\u名称
和默认值
您的启动器
将是活动A,而默认
将是您的活动B。不能有两个Lancher AFAIK。Logcat是调试和检查后台应用程序/机器状态的有用工具。从一个活动切换到另一个活动时,它将是自动的 首先更改xml,将第二个活动标记为默认活动
<activity android:name=".AddNewActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
现在,您可以使用StartActivity方法启动此活动。意图筛选器是应用程序清单文件中的一个表达式,用于指定组件希望接收的意图类型
当您创建一个隐式意图时,Android系统会通过将意图的内容与设备上其他应用程序的清单文件中声明的意图过滤器进行比较,找到要启动的适当组件。如果意图与意图过滤器匹配,系统将启动该组件并将其传递给意图对象
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>
如果你的应用程序被打开,你希望它成为第一个屏幕的活动,然后在意向类别中将其称为启动器,其余活动在意向类别中将其称为默认
例如:-有两个活动A和B
活动A是启动器,因此将其设置为意图类别中的启动器;B是活动A的子级,因此将其设置为默认值
<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.DEFAULT" />
</intent-filter>
</activity>
</application>
当您创建一个隐式意图时,Android系统会将意图的内容与设备上其他应用程序的清单文件中声明的意图过滤器进行比较,从而找到要启动的适当组件。如果意图与意图过滤器匹配,系统将启动该组件并将其传递给意图对象。如果多个意图过滤器兼容,系统将显示一个对话框,以便用户选择要使用的应用程序
意图过滤器是应用程序清单文件中的表达式,用于指定组件希望接收的意图类型。例如,通过为某个活动声明一个意图过滤器,您可以让其他应用程序以某种意图直接启动您的活动。同样,如果没有为活动声明任何意图过滤器,则只能使用显式意图启动活动
根据:如果可能的话,尝试一下这一即时解决方案:
Intent intent =new Intent(getApplicationBaseContext,second_Act.class);
StartActivity(intent);
意向过滤器是应用程序清单中的表达式,用于指定组件将接收的意向类型。
若组件并没有任何意图过滤器,它可以接收显式意图。
如果在清单中有多个活动设置为主活动和启动器,则带有筛选器的组件将同时接收隐式和显式意图。然后第一个活动被认为是启动器活动,android启动或打开第一个活动
<category android:name="android.intent.category.LAUNCHER" />
上面的代码使应用程序图标在设备菜单中可用,因此,如果我们在清单中声明2个启动器活动,那么将在设备应用程序菜单中创建2个应用程序图标
因此将有两个应用程序图标,单击第一个图标,清单中第一个声明的活动将启动,单击另一个声明的活动将启动Simple。明确解释什么是意图过滤器。这回答了这个线程标题中的问题。adb logcat听起来像复古。感谢@commonware的支持,我们还需要为这两个活动赋予不同的名称@Mahadevappa T
<category android:name="android.intent.category.LAUNCHER" />