您好。我是一个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");
我又观察了一件事 - 我输入'过滤器'。什么都没有显示,只是消息“没有默认提案”
任何人都可以帮助我吗?
答案 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>