java - Chromium For Android addPossiblyUnsafeInterface 不工作
问题描述
嘿,我正在为 Android 构建 Chromium,我试图弄清楚为什么 Javascript 接口不允许我在 Chrome 活动类中的网页中注入 javascript。即使我单独调用 tab.getWebContents().evaluateJavaScript(),浏览器冻结。有什么方法可以成功实现这一目标吗?下面是我的代码片段
import org.chromium.content.browser.JavascriptInterface;
// Chrome Activity
public abstract class ChromeActivity<C extends ChromeActivityComponent>
....
@Override
public void onDidFinishNavigation(Tab tab, String url, boolean isInMainFrame,
boolean isErrorPage, boolean hasCommitted, boolean isSameDocument,
boolean isFragmentNavigation, @Nullable Integer pageTransition, int errorCode,
int httpStatusCode)
{
JavascriptInjector ji = JavascriptInjector.fromWebContents(tab.getWebContents());
tab.getWebContents().evaluateJavaScript("alert("Hello World");",null);
ji.setAllowInspection(true);
ji.addPossiblyUnsafeInterface(new MyJavaScriptInterface(ChromeActivity.this), "JS", JavascriptInterface.class);
}
class MyJavaScriptInterface {
ChromeActivity context;
public MyJavaScriptInterface(ChromeActivity activity) {
this.context = activity;
}
@JavascriptInterface
public void app(){
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(this.context, "Test", duration);
toast.show();
}
}
解决方案
推荐阅读
- java - BOM 与依赖管理
- mysql - 按 2 个不同参数分组的时间差
- angular - 将操作符修补为 pipable 操作符,角度 5 到 6
- javascript - 带有 ArrayToDataTable 的 Google 柱形图工具提示
- go - 为 protobuf 消息字段定义自定义 go struct 标签
- gitlab - 配置runner同时运行多个job
- python - 如何使用python将数据从txt文件转换为Excel文件
- hyperledger-fabric - 如何启动/停止/重新启动结构节点
- c++ - 为什么我们需要在优先级队列声明中添加一个向量作为参数?
- excel - 尝试显示 excel 工作表名称时 SSIS 中的运行时错误