无法在Android中的“Intent Filter”中“添加动作”

时间:2011-05-23 14:53:26

标签: android intentfilter

您好。我是一个Android初学者,试图创建一个可以过滤多个动作的IntentFilter。不幸的是,当我开始使用addAction方法时,Eclipse会抛出一个错误:

  

“令牌”addAction“上的语法错误,   此标记后的标识符“

即使我已导入所需文件。这可能是一个设置问题,即使我不确定为什么其余代码没有显示任何问题。

这是我的代码存根:

import android.content.Intent;
import android.content.Context;
import android.content.IntentFilter;

...

private Context mContext;
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.SCREEN_OFF");

我又观察了一件事 - 我输入'过滤器'。什么都没有显示,只是消息“没有默认提案”

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:6)

您正在尝试在方法范围之外运行代码,这在Java中是非法的(除非它是一个赋值)。如果您将代码更改为

private Context mContext;
IntentFilter filter = new IntentFilter();
{
    filter.addAction("android.intent.action.SCREEN_OFF");
}

它将作为对象构造函数的一部分运行。

答案 1 :(得分:5)

在上面的问题中阅读你的评论(“此行的多个标记 - 令牌上的语法错误”)“,删除此令牌等),我仍然认为它是一个括号(或括号)不匹配问题,不让Eclipse理解代码。它可能是另一种方法。仔细检查你的所有文件。你可能会尝试删除大部分代码(只需将其复制到记事本),直到你缩小问题范围。


来自dev guide(强调我的):

  

intent过滤器是IntentFilter类的一个实例。但是,由于Android系统在启动该组件之前必须了解组件的功能,因此意图过滤器通常不会在Java代码中设置,而是在应用程序的清单文件中设置(AndroidManifest.xml)作为元素。 (一个例外将是通过调用Context.registerReceiver()动态注册的广播接收器的过滤器;它们直接创建为IntentFilter对象。)

我会将此添加到您的清单中:

<intent-filter android:label="@string/screen_off">
  <action android:name="android.intent.action.SCREEN_OFF" />
  <category android:name="android.intent.category.DEFAULT" />
</intent-filter>