2023年7月7日发(作者:)
Android:如何使⽤addJavaScriptInterface说明本⽂将和⼤家分享中的 addJavaScriptInterface⽅式。这个类主要能帮助调⽤你的函数中的任意活动⽅式。其中有如下⼀些需要注意的地⽅:addJavaScriptInterface⽅式帮助我们从⼀个⽹页传递值到Android XML视图(反之亦然)。你可以从⽹页调⽤你的活动类⽅式(反之亦然)。这是⼀个⾮常有⽤的功能,⽽当WebView中的是不能信赖的,这则是⼀个⾮常危险的安全问题,因为攻击者可以注⼊HTML执⾏你的代码。除⾮WebView所有HTML都是你写的,否则不要使⽤addJavascriptInterface()。本⽂包含如下要点:执⾏JavaScriptInterface及其⽅式。使⽤该界⾯,我们将绑定⼀个textview(⽂本视图)控制。demo app的源代码。使⽤代码我们将⽤到⼀个Eclipse ID,创建⼀个命名为JavaScriptInterfaceDemo的新项⽬。创建之后,即添加user permission for internet(⽤户互联⽹权限)到 ⽂件中。
android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:layout_weight="1"> android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="match_parent" android:textAppearance="?android:attr/textAppearanceLarge" />
final Handler myHandler = new Handler();
/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { te(savedInstanceState);
setContentView(); Wv = (WebView)findViewById(w1); myTextView = (TextView)findViewById(ew1);
final JavaScriptInterface myJavaScriptInterface = new JavaScriptInterface(this);
tings().setLightTouchEnabled(true); tings().setJavaScriptEnabled(true); ascriptInterface(myJavaScriptInterface, "AndroidFunction"); l("file:///android_asset/www/");
}
public class JavaScriptInterface { Context mContext; JavaScriptInterface(Context c) { mContext = c; }
public void showToast(String webMessage){
final String msgeToast = webMessage;
(new Runnable() { @Override public void run() { // This gets executed on the UI thread so it can safely modify Views t(msgeToast); } }); xt(mContext, webMessage, _SHORT).show(); } }}在Java类⽂件中,我们已经将⼀些代码写⼊到oncreate⽅式。在这个⽅式中,我们⽤findViewById⽅式找到webview 和textview控制。然后创建⼀个JavaScriptInterface类。该类有⼀个构建函数,该函数初始化Context类。那么,什么是Context类呢?Context类是⼀个抽象类,它允许访问特定应⽤资源和类,以及调⽤应⽤程序级操作,诸如发起活动、⼴播和接收意图等。在构建函数初始化后,创建⼀个名为showToast的⽅式,该⽅式有⼀个变量的msgeToast字符串,然后创建⼀个名为myHandler的Handler(处理器)。该处理器有⼀个Post⽅式,在该⽅式的声明中,创建⼀个新的可运⾏线程类的实例,在这个类⾥覆盖⼀个运⾏⽅式,该运⾏⽅式设置textview控制的值。现在在OnCreate⽅式中创建⼀个JavaScriptInterface实例。final JavaScriptInterface myJavaScriptInterface = new JavaScriptInterface(this);在JavaScriptInterface类初始化之后,添加⼀⾏到OnCreate⽅式。ascriptInterface(myJavaScriptInterface, "AndroidFunction");webview提供addJavascriptInterface⽅式。该⽅式包含两项参数:绑定到JavaScript的类实例。⽤来显⽰JavaScript中的实例的名称。对于webview,我们需要弟阿勇⼀些设置来启⽤JavaScript。tings().setJavaScriptEnabled(true);最后,需要在webview中提供⼀个web URL:l("file:///android_asset/www/");然后创建⼀个命名为的HTML⽂件。该HTML有⼀个⽂本框和⼀个提交按钮。HTML⽂件代码如下:
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
name="myText" id="mytextId" />
id="btnSubmit" onclick="javascript:return init();" />
该HTML⽂件有⼀个JavaScript函数名为init,该函数调⽤活动⽅式。ast(testVal);AndroidFunction是同样的名字,⽤来显⽰JavaScript中的实例。我们已经在addJavascriptInterface⽅式中给出该名字。现在运⾏你的app。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1688673466a161483.html
评论列表(0条)