对于UniWebView这种组件违规获取信息的处理
对于UniWebView这种组件违规获取信息的处理
UniWebView这个组件,原本是用来在Unity里使用浏览器来显示网页信息,但这个组件它自己不安份,偶尔去获取设备的敏感信息,经常导致不能过审。
今天就写一个干掉它的替换方案。
这里只写Andriod方面,举例如下:
1、在UnityPlayer的继承页面中定义一个安卓组件WebView的对象,webView。
2、在安卓的res文件夹的layout里添加一个activity_mian3.xml。
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/tvHand" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20dp" android:gravity="center" android:text="" android:textColor="#000"/> <LinearLayout android:id="@+id/llBtns" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_alignParentBottom="true" android:orientation="horizontal"> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center" android:layout_weight="1"> <Button android:id="@+id/imgbtn_start" android:layout_width="80dp" android:layout_height="40dp" android:text="确定" android:textSize="16dp" /> </LinearLayout> </LinearLayout> <WebView android:id="@+id/web1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/llBtns" android:layout_below="@id/tvHand" /> </RelativeLayout> </FrameLayout>
3、将这个网页添加到游戏中。
以下内容中的app,为当前android中activity的单例对象。
public void SetWebView(String url) { ViewGroup rootGroup = app.findViewById(android.R.id.content); LayoutInflater inflater = LayoutInflater.from(app); View viewMain3 = inflater.inflate(R.layout.activity_main3, null); webview = viewMain3.findViewById(R.id.web1); webview.loadUrl(url); webview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); //点击确定,关闭对应的网页并移除view。 viewMain3.findViewById(R.id.imgbtn_start).setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { webview.setVisibility(View.GONE); rootGroup.removeView(viewMain3); } }); webview.setVisibility(View.VISIBLE); rootGroup.addView(viewMain3); }
4、Android层封装和Unity层调用。
//由Unity调用的方法。 public static void ShowYSXY() { app.ShowYinSiXieYi(); } //安卓层的封装 public void ShowYinSiXieYi() { runOnUiThread(new Runnable() { @Override public void run() { SetWebView("http://www.baidu.com"); } }); }
小时候我把老婆种到地下,长大了我能收获一大堆老婆!
我是威少,我是一名Unity游戏的主程,我为自己带盐,希望此文能给您一点点微不足道的帮助,祝你成功!