Android-JavaScriptInterface中来自主类的调用方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android-JavaScriptInterface中来自主类的调用方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2111字,纯文字阅读大概需要4分钟。
内容图文
![Android-JavaScriptInterface中来自主类的调用方法](/upload/InfoBanner/zyjiaocheng/656/e48bfb2b619b4bd5aaf4f38cab2a53b6.jpg)
我是android开发的新手,我正在尝试制作一个WebView,它将允许我启动android camera应用程序.我该如何通过JavaScriptInterface在主类中调用方法?
谢谢.
public class MainActivity extends Activity {
public static final int MEDIA_TYPE_IMAGE = 1888;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView mainWebView = (WebView) findViewById(R.id.mainWebView);
mainWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
WebSettings webSettings = mainWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mainWebView.setWebViewClient(new MyCustomWebViewClient());
//mainWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
mainWebView.loadUrl("file:///mnt/sdcard/page.html");
}
private class MyCustomWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
public void takePicture() {
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, MEDIA_TYPE_IMAGE);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MEDIA_TYPE_IMAGE) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
}}
}
package com.cargowise.view;
import android.content.Context;
import android.os.Handler;
import android.widget.Toast;
public class JavaScriptInterface {
Context mContext;
/** Instantiate the interface and set the context */
JavaScriptInterface(Context c) {
mContext = c;
}
public void takePic() {
MainActivity.takePicture();
}
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
解决方法:
您已经存储了可以用来访问MainActivity的上下文.
更改此:
public void takePic() {
MainActivity.takePicture();
}
对此:
public void takePic() {
((MainActivity)mContext).takePicture();
}
注意:您可能想要添加一些类型检查或限制提供给MainActivity的上下文的类型,以强制执行正确的行为.
内容总结
以上是互联网集市为您收集整理的Android-JavaScriptInterface中来自主类的调用方法全部内容,希望文章能够帮你解决Android-JavaScriptInterface中来自主类的调用方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。