4

The method getSystemService(String) is undefined for the type WebAppInterface 我在使用“getSystemService”时遇到了这个错误。我在接口类而不是活动类中工作。

 @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

4 回答 4

5

这是因为方法 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);
    }

}
于 2013-06-24T12:23:13.623 回答
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作为 fromViber方法调用:

Vibrator v = (Vibrator)context.getSystemService(mContext.VIBRATOR_SERVICE);
于 2013-06-24T12:18:33.133 回答
0

mContext.VIBRATOR_SERVICE => 上下文.VIBRATOR_SERVICE

于 2013-06-24T13:02:27.377 回答
0

参考

未为 Listen 类型定义方法 getSystemService(String)

getSystemService是 class 的一个方法Context,所以你需要在上下文中运行它。

您从中复制的原始代码可能意味着从 -Activity派生类运行。Context如果它不在活动中,则需要将参数传递给您的方法。

于 2013-06-24T12:22:28.910 回答