對于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游戲的主程,我為自己帶鹽,希望此文能給您一點點微不足道的幫助,祝你成功!

浙公網安備 33010602011771號