浏览代码

设置为桌面应用,增加网络检测

weizhengliang 9 月之前
父节点
当前提交
a90db534a8

+ 6 - 0
app/src/main/AndroidManifest.xml

@@ -14,6 +14,8 @@
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
 
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
@@ -59,6 +61,10 @@
             <intent-filter android:priority="10">
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
+
+                <!--桌面应用-->
+                <category android:name="android.intent.category.HOME" />
+                <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
 

+ 32 - 0
app/src/main/java/com/example/informationkanban/MainActivity.java

@@ -3,6 +3,8 @@ package com.example.informationkanban;
 import androidx.appcompat.app.AppCompatActivity;
 
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -14,9 +16,11 @@ import android.webkit.WebChromeClient;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
+import android.widget.TextView;
 import android.widget.Toast;
 
 import com.example.informationkanban.dialog.UrlConfigDialogHelper;
+import com.example.informationkanban.utils.AppUtil;
 import com.example.informationkanban.utils.GetInformationUtils;
 import com.example.informationkanban.utils.LocaleMangerUtils;
 import com.example.informationkanban.utils.NetFunctionConfig;
@@ -25,9 +29,12 @@ public class MainActivity extends AppCompatActivity {
     private String TAG = MainActivity.class.getSimpleName();
     private WebView webView;
     private String MAC = "";
+    private TextView initView;
 
     private long backClickTime = 0;
 
+    private final Handler handler = new Handler(Looper.getMainLooper());
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         int languageId = NetFunctionConfig.getLanguageId(this);
@@ -55,7 +62,23 @@ public class MainActivity extends AppCompatActivity {
             //url为空则需要手动配置
             UrlConfigDialogHelper.showDialog(MainActivity.this);
         } else {
+            if (AppUtil.isNetConnection(MainActivity.this)) {
+                accessTheWebpage();
+            } else {
+                initView.setVisibility(View.VISIBLE);
+
+                //检测网络连接
+                handler.postDelayed(this::checkNetwork, 10000);
+            }
+        }
+    }
+
+    private void checkNetwork() {
+        Log.e(TAG, "start check network...");
+        if (AppUtil.isNetConnection(MainActivity.this)) {
             accessTheWebpage();
+        } else {
+            handler.postDelayed(this::checkNetwork, 10000);
         }
     }
 
@@ -74,9 +97,14 @@ public class MainActivity extends AppCompatActivity {
     private void init() {
         //获得控件
         webView = findViewById(R.id.wv_webview);
+        initView = findViewById(R.id.tv_init);
     }
 
     private void accessTheWebpage() {
+        handler.removeCallbacksAndMessages(null);
+
+        Log.e(TAG, "access web page...");
+
         webView.setInitialScale(100);//设置缩放比例
         WebSettings settings = webView.getSettings();
         settings.setJavaScriptCanOpenWindowsAutomatically(true);//设置js可以直接打开窗口,如window.open(),默认为false
@@ -99,6 +127,8 @@ public class MainActivity extends AppCompatActivity {
         }
 
         //Toast.makeText(MainActivity.this, "fetch: " + myUrl, Toast.LENGTH_LONG).show();
+        Toast.makeText(MainActivity.this, "正在加载数据,请稍后...", Toast.LENGTH_LONG).show();
+        initView.setVisibility(View.GONE);
         Log.e(TAG, "load url: " + myUrl);
 
         webView.loadUrl(myUrl);
@@ -154,6 +184,8 @@ public class MainActivity extends AppCompatActivity {
     //销毁Webview
     @Override
     protected void onDestroy() {
+        handler.removeCallbacksAndMessages(null);
+
         if (webView != null) {
             //webView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
             //webView.clearHistory();

+ 27 - 0
app/src/main/java/com/example/informationkanban/utils/AppUtil.java

@@ -4,6 +4,8 @@ import android.app.AlarmManager;
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
 import android.os.IBinder;
 import android.text.TextUtils;
 import android.util.Log;
@@ -193,4 +195,29 @@ public class AppUtil {
             e.printStackTrace();
         }
     }
+
+    /**
+     * 判断当前是否有网络连接,但是如果该连接的网络无法上网,也会返回true
+     * @param mContext
+     * @return
+     */
+    public static boolean isNetConnection(Context mContext) {
+        try {
+            if (mContext != null) {
+                ConnectivityManager connectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
+                NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
+                if (networkInfo != null) {
+                    if (networkInfo.getState() == NetworkInfo.State.CONNECTED) {
+                        return true;
+                    } else {
+                        return false;
+                    }
+                }
+            }
+            return false;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
 }

+ 13 - 2
app/src/main/res/layout/activity_main.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -12,4 +12,15 @@
         android:focusable="true"
         android:focusableInTouchMode="true"/>
 
-</LinearLayout>
+    <TextView
+        android:id="@+id/tv_init"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:text="无网络连接..."
+        android:textStyle="bold"
+        android:textSize="40sp"
+        android:textColor="#FF0000"
+        android:visibility="gone"/>
+
+</RelativeLayout>

+ 6 - 0
app/src/main/s64/AndroidManifest.xml

@@ -14,6 +14,8 @@
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
 
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
@@ -59,6 +61,10 @@
             <intent-filter android:priority="10">
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
+
+                <!--桌面应用-->
+                <category android:name="android.intent.category.HOME" />
+                <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
 

二进制
release/CBD律动家_v1.1.5_s32_home2.apk