使用getSystemService时出错

时间:2013-06-24 12:15:58

标签: android

当我使用“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);
    }

}

4 个答案:

答案 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