正如上面明确指出的官方文档 https://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29,API 级别 JELLY_BEAN_MR1 及以上需要使用 @JavascriptInterface,才能从 webview 端访问 java 函数。
这意味着项目构建目标必须指向 API 17 或更高版本,以解决以下导入问题:
import android.webkit.JavascriptInterface;
Android 如何处理 API 16 及以下版本的这段代码?我会收到运行时异常还是会在运行时忽略此导入?
我对这些答案感到非常惊讶......它们并不准确。
如果添加 JavascriptInterface 和另一个注释我的注释使用相同的方法(就像我一样),然后尝试访问我的注释实例注释,那么您将会收到 ClassDefNotFoundException 惊喜!
我的解决方案目前似乎有效(已经一年多了),是将注释声明添加到应用程序项目中:
package android.webkit;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface JavascriptInterface {}
这解决了 2.3.5 上的问题,并且在 4.3、4.4 和 4.2 上仍然有效。
希望这对其他人有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)