{"id":16962026,"url":"https://github.com/wangdahoo/jsbridge","last_synced_at":"2025-04-11T22:12:20.469Z","repository":{"id":89195476,"uuid":"64291258","full_name":"wangdahoo/JSBridge","owner":"wangdahoo","description":"Android WebView JavaScript Bridge. Inspired by marcuswestin's WebViewJavascriptBridge https://github.com/marcuswestin/WebViewJavascriptBridge","archived":false,"fork":false,"pushed_at":"2017-05-18T03:09:11.000Z","size":70,"stargazers_count":11,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-11T22:12:15.646Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wangdahoo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-07-27T08:31:05.000Z","updated_at":"2018-09-26T10:13:53.000Z","dependencies_parsed_at":"2023-06-25T22:49:15.164Z","dependency_job_id":null,"html_url":"https://github.com/wangdahoo/JSBridge","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangdahoo%2FJSBridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangdahoo%2FJSBridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangdahoo%2FJSBridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangdahoo%2FJSBridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wangdahoo","download_url":"https://codeload.github.com/wangdahoo/JSBridge/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248487682,"owners_count":21112190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T23:05:00.471Z","updated_at":"2025-04-11T22:12:20.449Z","avatar_url":"https://github.com/wangdahoo.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Android WebViewJavascriptBridge\n\n#### gradle script for jsbridge.jar\n\n```bash\n./gradlew :jsbridge:publish\n```\n\n\u003e 生成的jar包和js文件位于jsbridge/dist/目录下\n\n### how to use\n1. 复制jsbridge/dist/WebViewJavascriptBridge.js到应用目录的assets文件夹下，复制jsbridge/dist/js-bridge.jar到应用目录的libs目录下；\n2. 在应用的build.gradle文件中添加依赖\n\n```\ndependencies {\n    ...\n    compile files('libs/jsbridge-1.0.0.jar')\n}\n```\n\n3. Sample Code\n\n```java\n// Code In Activity: \nimport com.wangdahoo.jsbridge.JSBridgeWebView;\nimport com.wangdahoo.jsbridge.JSBridgeWebViewClient;\nimport com.wangdahoo.jsbridge.MessageDispatcher;\n\n...\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_main);\n        \n        // 1. 创建JSBridgeWebView实例\n        webView = new JSBridgeWebView(this);\n        // 2. 创建MessageDispather：消息派发组件, 拦截js端发送过来的消息，然后派发给消息中指定的消息处理组件（Handler）进行处理\n        MessageDispatcher messageDispatcher = new MessageDispatcher();\n        // 3. 给MessageDispather添加Hanlder\n        messageDispatcher.registerHandler(\"DialogAlert\", new DialogAlertHandler(this));\n        // 4. 设置WebViewClient\n        webView.setWebViewClient(new JSBridgeWebViewClient(webView, messageDispatcher));\n        \n        ...\n    }\n    \n...\n    \n```\n\n```java\n// 实现MessageHanlder\n\npublic class DialogAlertHandler extends BaseMessageHandler implements MessageHandler {\n\n    String title = \"提示\";\n    String content = \"\";\n    String btnOkText = \"确定\";\n\n    Context context;\n\n    public DialogAlertHandler(Context context) {\n        this.context = context;\n    }\n    \n    // 实现handle方法即可\n    @Override\n    public void handle(JSONObject message, final Callback callback) {\n\n        JSONObject data = getData(message);\n        final String callbackId = getStringValueByField(message, \"callbackId\");\n\n        if (data.has(\"title\"))\n            title = getStringValueByField(data, \"title\");\n        if (data.has(\"content\"))\n            content = getStringValueByField(data, \"content\");\n        if (data.has(\"btnOkText\"))\n            btnOkText = getStringValueByField(data, \"btnOkText\");\n\n        AlertDialog.Builder builder = new AlertDialog.Builder(context)\n                .setTitle(title)\n                .setMessage(content)\n                .setPositiveButton(btnOkText, new DialogInterface.OnClickListener() {\n                    @Override\n                    public void onClick(DialogInterface dialog, int which) {\n                        if (callback != null)\n                            callback.onCallback(makeResponse(callbackId));\n                    }\n                });\n\n        builder.create();\n        builder.show();\n    }\n\n}\n\n```\n\nThat's all and have fun.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwangdahoo%2Fjsbridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwangdahoo%2Fjsbridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwangdahoo%2Fjsbridge/lists"}