当我使用“getSystemService”时出现此错误The method getSystemService(String) is undefined for the type WebAppInterface
。我在接口类而不是活动类中工作。
@JavascriptInterface
public void Viber(String value ) {
if (value.equals("on")) {
// Get instance of Vibrator from current Context
Vibrator v = (Vibrator)getSystemService(mContext.VIBRATOR_SERVICE);
// Vibrate for 300 milliseconds
v.vibrate(300);
}
}
答案 0 :(得分:4)
这是因为metod getSystemService属于Context类,所以你必须在上下文中运行它,但是你是从一个活动运行它。
@JavascriptInterface
public void Viber(Context cn, String value) {
if (value.equals("on")) {
// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) cn.getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 300 milliseconds
v.vibrate(300);
}
}
答案 1 :(得分:3)
要从非Android应用程序组件获取系统服务,您需要将Context传递给java类:
@JavascriptInterface
public void Viber(String value, Context context) {
if (value.equals("on")) {
// Get instance of Vibrator from current Context
Vibrator v = (Vibrator)context.getSystemService(mContext.VIBRATOR_SERVICE);
// Vibrate for 300 milliseconds
v.vibrate(300);
}
}
或者您可以将WebAppInterface类Contstorctor用作:
public class WebAppInterface{
Context context;
public WebAppInterface(Context context){
this.context=context;
}
....
}
现在使用上下文从getSystemService
方法调用Viber
:
Vibrator v = (Vibrator)context.getSystemService(mContext.VIBRATOR_SERVICE);
答案 2 :(得分:0)
参考
The method getSystemService(String) is undefined for the type Listen
getSystemService
是类Context
的方法,因此您需要在上下文中运行它。
您复制它的原始代码可能是从Activity
派生类运行的。如果它不在Activity中,你需要将Context
参数传递给你的方法。
答案 3 :(得分:0)
mContext.VIBRATOR_SERVICE => Context.VIBRATOR_SERVICE