gpt4 book ai didi

Android - 从 JavaScriptInterface 中的主类调用方法

转载 作者:太空狗 更新时间:2023-10-29 12:51:49 26 4
gpt4 key购买 nike

我是 android 开发的新手,我正在尝试制作一个允许我启动 android 相机应用程序的 WebView。如何使用我的 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 中的主类调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11515250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com