【问题标题】:Unable to launch an activity using implicit intent specifying only action无法使用仅指定操作的隐式意图启动活动
【发布时间】:2010-03-05 07:37:08
【问题描述】:

我正在尝试通过仅从其他应用程序中的活动指定其意图过滤器中定义的操作(自定义)来启动活动。要启动的活动是其应用程序的主要活动,因此在其意图过滤器中将android.intent.action.MAINandroid.intent.category.LAUNCHER 设置为动作和类别。现在根据关于 Intent 和 Intent Filter 的 android 文档,在这种情况下我根本不需要指定 DEFAULT 类别。但是做同样的事情我无法启动活动。

LogCat 说,Activity 找不到...

是我误解了文本还是缺少其他内容...?

代码,用于调用活动

Intent i=new Intent();
i.setAction("android.AddressBookV4.firstActivity");
startActivity(i);

清单文件中被调用的Activity的定义

<activity android:name=".AddressBook"
          android:label="@string/app_name">
     <intent-filter>
         <action android:name="android.AddressBookV4.firstActivity" />
         <action android:name="android.intent.action.MAIN" />
         <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
</activity>

【问题讨论】:

    标签: android


    【解决方案1】:

    您需要将LAUNCHER 类别添加到您的Intent,因为&lt;intent-filter&gt; 表示它与以下意图匹配(以伪代码形式):

    ((action IS "android.AddressBookV4.firstActivity")
        OR (action IS "android.intent.action.MAIN"))
      AND (category IS "android.intent.category.LAUNCHER")
    

    【讨论】:

    • 但是没有类别的意图应该通过了类别测试。也符合。如果活动设置为“主”动作且类别为“启动器”,则无需提及意图对象中存在的文档默认类别。
    • “但是没有类别的意图应该通过了类别测试”——不,它不会。您需要将LAUNCHER 类别添加到您的Intent
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 2018-04-28
    • 2020-12-11
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多