android - android无法设置值以在webview中输入标签
问题描述
我使用 javascript 接口调用 android java 函数来扫描 qr 码,但我无法设置值以在 webview 中输入标签
代码 :
public class MainActivity extends AppCompatActivity {
WebView myWebView;
String result;
String js;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();
myWebView = (WebView)findViewById(R.id.myWebView);
myWebView.loadUrl("http://192.168.1.20/testsite/index.php");
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.getSettings().setDomStorageEnabled(true);
myWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
view.loadUrl(request.getUrl().toString());
}
return false;
}
});
myWebView.addJavascriptInterface(new WebViewJavaScriptInterface(this), "app");
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 99 && resultCode == RESULT_OK){
if (data != null) {
result = data.getStringExtra("result");
setResult();
}
}
}
void setResult(){
js = "javascript:document.getElementById('txt_result').value="+result;
myWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
if (Build.VERSION.SDK_INT >= 19) {
view.evaluateJavascript(js, new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) { }
});
} else {
view.loadUrl(js);
}
}
});
}
public class WebViewJavaScriptInterface {
private Context context;
/*
* Need a reference to the context in order to sent a post message
*/
public WebViewJavaScriptInterface(Context context) {
this.context = context;
}
/*
* This method can be called from Android. @JavascriptInterface
* required after SDK version 17.
*/
@JavascriptInterface
public void scanqr() {
Intent intent = new Intent(MainActivity.this, ScanQrCodeActivity.class);
startActivityForResult(intent, 99);
}
}
}
解决方案
推荐阅读
- amazon-web-services - 访问没有区域端点的 amazon s3 存储桶
- ibm-mq - 使用 MQ Explorer 将多行测试消息放入 MQ 队列
- shell - 为什么在while循环之前不允许heredoc重定向
- c# - 如何在c#中对数字字符串列表进行排序
- javascript - Javascript变量=函数()->未定义
- java - 从json获取数组不起作用
- node.js - 从对象数组中查找特定对象 javascript ES
- angular - 全屏模式下的 Ionic + AGM (Angular Google Maps) 空白屏幕
- c# - 试图打开另一个应用程序配置文件
- serverless - 如何在工单创建上使用 Freshdesk 无服务器应用程序更新参数值