Ver código fonte

初始化界面增加设置入口,增加开机自启动,需要提前打开相应权限

weizhengliang 2 anos atrás
pai
commit
bd245cd3c4

+ 22 - 0
app/build.gradle

@@ -17,8 +17,30 @@ android {
         targetCompatibility JavaVersion.VERSION_1_8
     }
 
+    signingConfigs {
+        release {
+            storeFile file("keystore_wuyuqing_3128/rk3128.jks")
+            storePassword "111111"
+            keyAlias "rk3128"
+            keyPassword "111111"
+        }
+        debug {
+            storeFile file("keystore_wuyuqing_3128/rk3128.jks")
+            storePassword "111111"
+            keyAlias "rk3128"
+            keyPassword "111111"
+        }
+    }
+
     buildTypes {
         release {
+            signingConfig signingConfigs.release
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+        }
+
+        debug {
+            signingConfig signingConfigs.debug
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }

+ 12 - 1
app/src/main/AndroidManifest.xml

@@ -5,6 +5,8 @@
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
 
     <application
         android:name=".BaseApp"
@@ -23,7 +25,16 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-        <activity android:name="com.wdkl.infoboardclassic.MainActivity"></activity>
+        <activity android:name="com.wdkl.infoboardclassic.MainActivity"/>
+
+        <receiver
+            android:name="com.wdkl.infoboardclassic.receiver.WdBootReceiver"
+            android:enabled="true"
+            android:exported="true">
+            <intent-filter android:priority="1000">
+                <action android:name="android.intent.action.BOOT_COMPLETED"/>
+            </intent-filter>
+        </receiver>
     </application>
 
 </manifest>

+ 23 - 0
app/src/main/java/com/wdkl/infoboardclassic/InitActivity.java

@@ -1,7 +1,10 @@
 package com.wdkl.infoboardclassic;
 
 import android.content.Intent;
+import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
+import android.provider.Settings;
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
@@ -51,6 +54,19 @@ public class InitActivity extends AppCompatActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_init);
 
+        if (Build.VERSION.SDK_INT >= 23) {
+            try {
+                if (!Settings.canDrawOverlays(this)) {
+                    //Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
+                    //Intent intent = new Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
+                    //startActivityForResult(intent, 10);
+                    ToastUtil.showLongToast(R.string.app_permission_warning);
+                }
+            } catch (Exception ex) {
+                ex.printStackTrace();
+            }
+        }
+
         et_ipAddr = findViewById(R.id.host_ip);
         cb_keepIp = findViewById(R.id.cb_keep_ip);
         int isKeepIp = SharedPreferencesUtil.getIntSp(getApplicationContext(), Constants.MSG_SP, SharedPreferencesUtil.KEEP_IP);
@@ -82,6 +98,13 @@ public class InitActivity extends AppCompatActivity {
             }
         });
 
+        findViewById(R.id.setting_button).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                startActivity(new Intent(Settings.ACTION_SETTINGS));
+            }
+        });
+
         tv_version = findViewById(R.id.view_title_right_tv);
         tv_version.setText("version: " + BuildConfig.VERSION_NAME);
         tv_IP = findViewById(R.id.view_title_center_tv);

+ 21 - 0
app/src/main/java/com/wdkl/infoboardclassic/receiver/WdBootReceiver.java

@@ -0,0 +1,21 @@
+package com.wdkl.infoboardclassic.receiver;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+import com.wdkl.infoboardclassic.InitActivity;
+
+public class WdBootReceiver extends BroadcastReceiver {
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
+            Log.d("wdBoot", "收到开机广播,启动app");
+            Intent startIntent= new Intent(context, InitActivity.class);
+            startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            context.startActivity(startIntent);
+        }
+    }
+}

+ 1 - 1
app/src/main/res/drawable/selector_login_botton.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:drawable="@drawable/selector_login_button_item_true" android:state_pressed="true"/>
+    <item android:drawable="@drawable/selector_login_button_item_true" android:state_focused="true"/>
     <item android:drawable="@drawable/selector_login_button_item_false"/>
 </selector>

+ 2 - 2
app/src/main/res/drawable/selector_login_button_item_false.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android" >
-    <solid android:color="#F57401" />
-    <corners android:radius="20dp"></corners>
+    <solid android:color="#8c8c8c" />
+    <corners android:radius="20dp"/>
 </shape>

+ 2 - 2
app/src/main/res/drawable/selector_login_button_item_true.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android" >
-    <solid android:color="#F0D85A" />
-    <corners android:radius="20dp"></corners>
+    <solid android:color="#F57401" />
+    <corners android:radius="20dp"/>
 </shape>

+ 14 - 0
app/src/main/res/layout/activity_init.xml

@@ -59,5 +59,19 @@
             android:text="@string/login"
             android:textColor="@color/white"
             android:textSize="22sp" />
+
+        <Button
+            android:id="@+id/setting_button"
+            android:layout_width="match_parent"
+            android:layout_height="55dp"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginLeft="25dp"
+            android:layout_marginRight="25dp"
+            android:layout_marginTop="20dp"
+            android:layout_below="@+id/login_button"
+            android:background="@drawable/selector_login_botton"
+            android:text="@string/settings"
+            android:textColor="@color/white"
+            android:textSize="22sp" />
     </RelativeLayout>
 </RelativeLayout>

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -4,6 +4,8 @@
     <string name="info_title">工作信息看板</string>
     <string name="room_info">病房动态</string>
     <string name="login">登  录</string>
+    <string name="settings">设  置</string>
+    <string name="app_permission_warning">请进入设置-应用-特殊应用权限-显示在其他应用上层,打开信息看板权限</string>
     <string name="title_keep_ip">记住当前IP</string>
     <string name="hint_enter_ip_addr">请输入需要连接的主机IP地址</string>
     <string name="tips_invalid_ip">请输入正确的IP地址</string>