diff --git a/.gitignore b/.gitignore
index aa724b7..1d18648 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,4 @@
.externalNativeBuild
.cxx
local.properties
+/.idea/stat.log
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 35ffc9d..76aa2a5 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -31,5 +31,15 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/stat.log b/.idea/stat.log
index 5bee623..199638b 100644
--- a/.idea/stat.log
+++ b/.idea/stat.log
@@ -1128,3 +1128,630 @@
{"ts":1687706769704,"action":"IDE_ACTIVATED"}
{"ts":1687706790273,"action":"IDE_DEACTIVATED"}
{"ts":1687706790400,"action":"IDE_ACTIVATED"}
+{"ts":1687707822844,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"53"}}
+{"ts":1687707822844,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"451"}}
+{"ts":1687707824527,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"451"}}
+{"ts":1687707824527,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"53"}}
+{"ts":1687707832841,"action":"IDE_DEACTIVATED"}
+{"ts":1687707852312,"action":"IDE_ACTIVATED"}
+{"ts":1687707894743,"action":"IDE_DEACTIVATED"}
+{"ts":1687707908406,"action":"IDE_ACTIVATED"}
+{"ts":1687707925815,"action":"IDE_DEACTIVATED"}
+{"ts":1687707929038,"action":"IDE_ACTIVATED"}
+{"ts":1687707930135,"action":"IDE_DEACTIVATED"}
+{"ts":1687708026207,"action":"IDE_ACTIVATED"}
+{"ts":1687708027553,"action":"IDE_DEACTIVATED"}
+{"ts":1687708028289,"action":"IDE_ACTIVATED"}
+{"ts":1687708037603,"action":"IDE_DEACTIVATED"}
+{"ts":1687747810130,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"451"}}
+{"ts":1687747814725,"action":"PROJECT_OPENED","tags":{"PROJECT_NAME":"MicroLauncher"}}
+{"ts":1687747886624,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"451"}}
+{"ts":1687747886624,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"53"}}
+{"ts":1687747892432,"action":"IDE_DEACTIVATED"}
+{"ts":1687747901154,"action":"IDE_ACTIVATED"}
+{"ts":1687747902274,"action":"IDE_DEACTIVATED"}
+{"ts":1687747902389,"action":"IDE_ACTIVATED"}
+{"ts":1687747910595,"action":"IDE_DEACTIVATED"}
+{"ts":1687747931723,"action":"IDE_ACTIVATED"}
+{"ts":1687747957490,"action":"IDE_DEACTIVATED"}
+{"ts":1687747963926,"action":"IDE_ACTIVATED"}
+{"ts":1687747977658,"action":"IDE_DEACTIVATED"}
+{"ts":1687747984906,"action":"IDE_ACTIVATED"}
+{"ts":1687747987130,"action":"IDE_DEACTIVATED"}
+{"ts":1687747995889,"action":"IDE_ACTIVATED"}
+{"ts":1687748088049,"action":"IDE_DEACTIVATED"}
+{"ts":1687748088171,"action":"IDE_ACTIVATED"}
+{"ts":1687748090930,"action":"IDE_DEACTIVATED"}
+{"ts":1687748109394,"action":"IDE_ACTIVATED"}
+{"ts":1687748122907,"action":"IDE_DEACTIVATED"}
+{"ts":1687748142164,"action":"IDE_ACTIVATED"}
+{"ts":1687748181919,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"59"}}
+{"ts":1687748181919,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/adapter/AppAdapter.java","tags":{"FILE_LINE_OF_CODE":"205"}}
+{"ts":1687748182804,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/adapter/AppAdapter.java","tags":{"FILE_LINE_OF_CODE":"205"}}
+{"ts":1687748182804,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/adapter/OnItemCallback.java","tags":{"FILE_LINE_OF_CODE":"9"}}
+{"ts":1687748186030,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/adapter/OnItemCallback.java","tags":{"FILE_LINE_OF_CODE":"9"}}
+{"ts":1687748186030,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/adapter/AppAdapter.java","tags":{"FILE_LINE_OF_CODE":"205"}}
+{"ts":1687748207049,"action":"IDE_DEACTIVATED"}
+{"ts":1687748277320,"action":"IDE_ACTIVATED"}
+{"ts":1687748279682,"action":"IDE_DEACTIVATED"}
+{"ts":1687748308380,"action":"IDE_ACTIVATED"}
+{"ts":1687748311330,"action":"IDE_DEACTIVATED"}
+{"ts":1687748367377,"action":"IDE_ACTIVATED"}
+{"ts":1687748372644,"action":"IDE_DEACTIVATED"}
+{"ts":1687748425770,"action":"IDE_ACTIVATED"}
+{"ts":1687748428603,"action":"IDE_DEACTIVATED"}
+{"ts":1687748453675,"action":"IDE_ACTIVATED"}
+{"ts":1687748453818,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/adapter/AppAdapter.java","tags":{"FILE_LINE_OF_CODE":"205"}}
+{"ts":1687748453818,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/adapter/OnItemCallback.java","tags":{"FILE_LINE_OF_CODE":"9"}}
+{"ts":1687748459990,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/adapter/OnItemCallback.java","tags":{"FILE_LINE_OF_CODE":"9"}}
+{"ts":1687748459990,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/adapter/AppAdapter.java","tags":{"FILE_LINE_OF_CODE":"205"}}
+{"ts":1687748507873,"action":"IDE_DEACTIVATED"}
+{"ts":1687748509941,"action":"IDE_ACTIVATED"}
+{"ts":1687748510985,"action":"IDE_DEACTIVATED"}
+{"ts":1687748525233,"action":"IDE_ACTIVATED"}
+{"ts":1687748535311,"action":"IDE_DEACTIVATED"}
+{"ts":1687748538258,"action":"IDE_ACTIVATED"}
+{"ts":1687748600649,"action":"IDE_DEACTIVATED"}
+{"ts":1687748671924,"action":"IDE_ACTIVATED"}
+{"ts":1687748729813,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/adapter/AppAdapter.java","tags":{"FILE_LINE_OF_CODE":"205"}}
+{"ts":1687748729813,"action":"FILE_OPENED","file":"/app/src/main/res/layout/app_list_item_grid.xml","tags":{"FILE_LINE_OF_CODE":"36"}}
+{"ts":1687748740041,"action":"FILE_CLOSED","file":"/app/src/main/res/layout/app_list_item_grid.xml","tags":{"FILE_LINE_OF_CODE":"36"}}
+{"ts":1687748740041,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/adapter/AppAdapter.java","tags":{"FILE_LINE_OF_CODE":"205"}}
+{"ts":1687748796558,"action":"IDE_DEACTIVATED"}
+{"ts":1687748838556,"action":"IDE_ACTIVATED"}
+{"ts":1687748854362,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/adapter/AppAdapter.java","tags":{"FILE_LINE_OF_CODE":"205"}}
+{"ts":1687748854363,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"59"}}
+{"ts":1687748866556,"action":"IDE_DEACTIVATED"}
+{"ts":1687748871884,"action":"IDE_ACTIVATED"}
+{"ts":1687748872164,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"59"}}
+{"ts":1687748930032,"action":"IDE_DEACTIVATED"}
+{"ts":1687748948208,"action":"IDE_ACTIVATED"}
+{"ts":1687748948297,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"59"}}
+{"ts":1687748950306,"action":"IDE_DEACTIVATED"}
+{"ts":1687748983468,"action":"IDE_ACTIVATED"}
+{"ts":1687748987180,"action":"IDE_DEACTIVATED"}
+{"ts":1687748998879,"action":"IDE_ACTIVATED"}
+{"ts":1687748999185,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"59"}}
+{"ts":1687748999185,"action":"FILE_OPENED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"120"}}
+{"ts":1687749006843,"action":"IDE_DEACTIVATED"}
+{"ts":1687749010848,"action":"IDE_ACTIVATED"}
+{"ts":1687749022846,"action":"IDE_DEACTIVATED"}
+{"ts":1687749026156,"action":"IDE_ACTIVATED"}
+{"ts":1687749034078,"action":"IDE_DEACTIVATED"}
+{"ts":1687749039210,"action":"IDE_ACTIVATED"}
+{"ts":1687749039544,"action":"FILE_CLOSED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"122"}}
+{"ts":1687749039544,"action":"FILE_OPENED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"48"}}
+{"ts":1687749051590,"action":"IDE_DEACTIVATED"}
+{"ts":1687749072971,"action":"IDE_ACTIVATED"}
+{"ts":1687749073293,"action":"FILE_CLOSED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"51"}}
+{"ts":1687749073293,"action":"FILE_OPENED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"122"}}
+{"ts":1687749076581,"action":"IDE_DEACTIVATED"}
+{"ts":1687749086388,"action":"IDE_ACTIVATED"}
+{"ts":1687749123011,"action":"IDE_DEACTIVATED"}
+{"ts":1687749134806,"action":"IDE_ACTIVATED"}
+{"ts":1687749149428,"action":"IDE_DEACTIVATED"}
+{"ts":1687749165811,"action":"IDE_ACTIVATED"}
+{"ts":1687749192160,"action":"IDE_DEACTIVATED"}
+{"ts":1687749199618,"action":"IDE_ACTIVATED"}
+{"ts":1687749226015,"action":"IDE_DEACTIVATED"}
+{"ts":1687749338715,"action":"IDE_ACTIVATED"}
+{"ts":1687749338996,"action":"FILE_CLOSED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687749338996,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"59"}}
+{"ts":1687749350452,"action":"IDE_DEACTIVATED"}
+{"ts":1687749387842,"action":"IDE_ACTIVATED"}
+{"ts":1687749394599,"action":"IDE_DEACTIVATED"}
+{"ts":1687749398862,"action":"IDE_ACTIVATED"}
+{"ts":1687749461004,"action":"IDE_DEACTIVATED"}
+{"ts":1687749467499,"action":"IDE_ACTIVATED"}
+{"ts":1687749469691,"action":"IDE_DEACTIVATED"}
+{"ts":1687749490891,"action":"IDE_ACTIVATED"}
+{"ts":1687749517722,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"69"}}
+{"ts":1687749517722,"action":"FILE_OPENED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687749527754,"action":"IDE_DEACTIVATED"}
+{"ts":1687749555931,"action":"IDE_ACTIVATED"}
+{"ts":1687749556023,"action":"FILE_CLOSED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687749556023,"action":"FILE_OPENED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"51"}}
+{"ts":1687749563096,"action":"FILE_CLOSED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"51"}}
+{"ts":1687749563096,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"69"}}
+{"ts":1687749580682,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"69"}}
+{"ts":1687749580682,"action":"FILE_OPENED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687749599271,"action":"IDE_DEACTIVATED"}
+{"ts":1687749635818,"action":"IDE_ACTIVATED"}
+{"ts":1687749669421,"action":"FILE_CLOSED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687749669421,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"69"}}
+{"ts":1687749776105,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"73"}}
+{"ts":1687749776105,"action":"FILE_OPENED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687749780366,"action":"FILE_CLOSED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687749780366,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"73"}}
+{"ts":1687749797896,"action":"IDE_DEACTIVATED"}
+{"ts":1687749810572,"action":"IDE_ACTIVATED"}
+{"ts":1687749822033,"action":"IDE_DEACTIVATED"}
+{"ts":1687749824249,"action":"IDE_ACTIVATED"}
+{"ts":1687749915785,"action":"IDE_DEACTIVATED"}
+{"ts":1687749940655,"action":"IDE_ACTIVATED"}
+{"ts":1687749958409,"action":"IDE_DEACTIVATED"}
+{"ts":1687749962937,"action":"IDE_ACTIVATED"}
+{"ts":1687749974770,"action":"IDE_DEACTIVATED"}
+{"ts":1687749981197,"action":"IDE_ACTIVATED"}
+{"ts":1687749996182,"action":"IDE_DEACTIVATED"}
+{"ts":1687750002634,"action":"IDE_ACTIVATED"}
+{"ts":1687750043140,"action":"IDE_DEACTIVATED"}
+{"ts":1687750069366,"action":"IDE_ACTIVATED"}
+{"ts":1687750099977,"action":"IDE_DEACTIVATED"}
+{"ts":1687750105778,"action":"IDE_ACTIVATED"}
+{"ts":1687750154142,"action":"IDE_DEACTIVATED"}
+{"ts":1687750187561,"action":"IDE_ACTIVATED"}
+{"ts":1687750333773,"action":"IDE_DEACTIVATED"}
+{"ts":1687750357756,"action":"IDE_ACTIVATED"}
+{"ts":1687750423160,"action":"IDE_DEACTIVATED"}
+{"ts":1687750424697,"action":"IDE_ACTIVATED"}
+{"ts":1687750431551,"action":"IDE_DEACTIVATED"}
+{"ts":1687750442651,"action":"IDE_ACTIVATED"}
+{"ts":1687750473445,"action":"IDE_DEACTIVATED"}
+{"ts":1687750485136,"action":"IDE_ACTIVATED"}
+{"ts":1687750535715,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"78"}}
+{"ts":1687750535715,"action":"FILE_OPENED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687750541915,"action":"FILE_CLOSED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687750541915,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"78"}}
+{"ts":1687750603900,"action":"IDE_DEACTIVATED"}
+{"ts":1687750642996,"action":"IDE_ACTIVATED"}
+{"ts":1687750679469,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"78"}}
+{"ts":1687750679469,"action":"FILE_OPENED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687750688676,"action":"IDE_DEACTIVATED"}
+{"ts":1687750705199,"action":"IDE_ACTIVATED"}
+{"ts":1687750705284,"action":"FILE_CLOSED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687750705284,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"78"}}
+{"ts":1687750731967,"action":"IDE_DEACTIVATED"}
+{"ts":1687750762024,"action":"IDE_ACTIVATED"}
+{"ts":1687750818241,"action":"IDE_DEACTIVATED"}
+{"ts":1687750837457,"action":"IDE_ACTIVATED"}
+{"ts":1687750839444,"action":"IDE_DEACTIVATED"}
+{"ts":1687750911383,"action":"IDE_ACTIVATED"}
+{"ts":1687750999151,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"79"}}
+{"ts":1687750999151,"action":"FILE_OPENED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687751007771,"action":"FILE_CLOSED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687751007771,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"79"}}
+{"ts":1687751078857,"action":"IDE_DEACTIVATED"}
+{"ts":1687751079666,"action":"IDE_ACTIVATED"}
+{"ts":1687751106865,"action":"IDE_DEACTIVATED"}
+{"ts":1687751155561,"action":"IDE_ACTIVATED"}
+{"ts":1687751235766,"action":"IDE_DEACTIVATED"}
+{"ts":1687751240379,"action":"IDE_ACTIVATED"}
+{"ts":1687751262380,"action":"IDE_DEACTIVATED"}
+{"ts":1687751315924,"action":"IDE_ACTIVATED"}
+{"ts":1687751330624,"action":"IDE_DEACTIVATED"}
+{"ts":1687751365968,"action":"IDE_ACTIVATED"}
+{"ts":1687751383999,"action":"IDE_DEACTIVATED"}
+{"ts":1687751421779,"action":"IDE_ACTIVATED"}
+{"ts":1687751443641,"action":"IDE_DEACTIVATED"}
+{"ts":1687751509198,"action":"IDE_ACTIVATED"}
+{"ts":1687751578766,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"79"}}
+{"ts":1687751578766,"action":"FILE_OPENED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687751588588,"action":"FILE_CLOSED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"131"}}
+{"ts":1687751588588,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"79"}}
+{"ts":1687751624560,"action":"IDE_DEACTIVATED"}
+{"ts":1687751624690,"action":"IDE_ACTIVATED"}
+{"ts":1687751624868,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687751633114,"action":"IDE_DEACTIVATED"}
+{"ts":1687751633248,"action":"IDE_ACTIVATED"}
+{"ts":1687751644849,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687751651158,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687751652268,"action":"FILE_OPENED","file":"/app/src/main/res/layout/app_list_item_grid.xml","tags":{"FILE_LINE_OF_CODE":"36"}}
+{"ts":1687751659544,"action":"FILE_CLOSED","file":"/app/src/main/res/layout/app_list_item_grid.xml","tags":{"FILE_LINE_OF_CODE":"36"}}
+{"ts":1687751659544,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"451"}}
+{"ts":1687751664208,"action":"IDE_DEACTIVATED"}
+{"ts":1687751697350,"action":"IDE_ACTIVATED"}
+{"ts":1687751724841,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"451"}}
+{"ts":1687751724841,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"3"}}
+{"ts":1687751767853,"action":"IDE_DEACTIVATED"}
+{"ts":1687752063233,"action":"IDE_ACTIVATED"}
+{"ts":1687752065585,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"15"}}
+{"ts":1687752065585,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687752067704,"action":"IDE_DEACTIVATED"}
+{"ts":1687752072240,"action":"IDE_ACTIVATED"}
+{"ts":1687752076517,"action":"IDE_DEACTIVATED"}
+{"ts":1687752081775,"action":"IDE_ACTIVATED"}
+{"ts":1687752086932,"action":"IDE_DEACTIVATED"}
+{"ts":1687752090932,"action":"IDE_ACTIVATED"}
+{"ts":1687752094502,"action":"IDE_DEACTIVATED"}
+{"ts":1687752167139,"action":"IDE_ACTIVATED"}
+{"ts":1687752185069,"action":"IDE_DEACTIVATED"}
+{"ts":1687752185518,"action":"IDE_ACTIVATED"}
+{"ts":1687752186386,"action":"IDE_DEACTIVATED"}
+{"ts":1687752204195,"action":"IDE_ACTIVATED"}
+{"ts":1687752210909,"action":"IDE_DEACTIVATED"}
+{"ts":1687752234072,"action":"IDE_ACTIVATED"}
+{"ts":1687752238993,"action":"IDE_DEACTIVATED"}
+{"ts":1687752325622,"action":"IDE_ACTIVATED"}
+{"ts":1687752352952,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687752352952,"action":"FILE_OPENED","file":"/app/src/main/res/layout/activity_privacy_policy.xml","tags":{"FILE_LINE_OF_CODE":"7"}}
+{"ts":1687752452173,"action":"IDE_DEACTIVATED"}
+{"ts":1687752472483,"action":"IDE_ACTIVATED"}
+{"ts":1687752574035,"action":"FILE_CLOSED","file":"/app/src/main/res/layout/activity_privacy_policy.xml","tags":{"FILE_LINE_OF_CODE":"47"}}
+{"ts":1687752574035,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"15"}}
+{"ts":1687752596757,"action":"IDE_DEACTIVATED"}
+{"ts":1687752596882,"action":"IDE_ACTIVATED"}
+{"ts":1687752603786,"action":"IDE_DEACTIVATED"}
+{"ts":1687752814998,"action":"IDE_ACTIVATED"}
+{"ts":1687752815999,"action":"IDE_DEACTIVATED"}
+{"ts":1687752816964,"action":"IDE_ACTIVATED"}
+{"ts":1687752817780,"action":"IDE_DEACTIVATED"}
+{"ts":1687753142014,"action":"IDE_ACTIVATED"}
+{"ts":1687753169628,"action":"IDE_DEACTIVATED"}
+{"ts":1687753170958,"action":"IDE_ACTIVATED"}
+{"ts":1687753174217,"action":"IDE_DEACTIVATED"}
+{"ts":1687753192035,"action":"IDE_ACTIVATED"}
+{"ts":1687753193177,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"22"}}
+{"ts":1687753193177,"action":"FILE_OPENED","file":"/app/src/main/assets/privacy.html","tags":{"FILE_LINE_OF_CODE":"102"}}
+{"ts":1687753198127,"action":"FILE_CLOSED","file":"/app/src/main/assets/privacy.html","tags":{"FILE_LINE_OF_CODE":"102"}}
+{"ts":1687753198127,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687753203693,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687753203693,"action":"FILE_OPENED","file":"/app/src/main/assets/privacy.html","tags":{"FILE_LINE_OF_CODE":"102"}}
+{"ts":1687753214909,"action":"FILE_CLOSED","file":"/app/src/main/assets/privacy.html","tags":{"FILE_LINE_OF_CODE":"102"}}
+{"ts":1687753214909,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"22"}}
+{"ts":1687753216903,"action":"IDE_DEACTIVATED"}
+{"ts":1687753248423,"action":"IDE_ACTIVATED"}
+{"ts":1687753259435,"action":"IDE_DEACTIVATED"}
+{"ts":1687753261607,"action":"IDE_ACTIVATED"}
+{"ts":1687753274211,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"23"}}
+{"ts":1687753274212,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"451"}}
+{"ts":1687753309450,"action":"IDE_DEACTIVATED"}
+{"ts":1687753309877,"action":"IDE_ACTIVATED"}
+{"ts":1687753311468,"action":"IDE_DEACTIVATED"}
+{"ts":1687753317900,"action":"IDE_ACTIVATED"}
+{"ts":1687753452139,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"460"}}
+{"ts":1687753452139,"action":"FILE_OPENED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"131"}}
+{"ts":1687753482884,"action":"FILE_CLOSED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687753482884,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"460"}}
+{"ts":1687753487536,"action":"IDE_DEACTIVATED"}
+{"ts":1687753487668,"action":"IDE_ACTIVATED"}
+{"ts":1687753522795,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"460"}}
+{"ts":1687753522795,"action":"FILE_OPENED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"51"}}
+{"ts":1687753524443,"action":"FILE_CLOSED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"51"}}
+{"ts":1687753524443,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687753646825,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687753646992,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687753668935,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687753720720,"action":"FILE_OPENED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"51"}}
+{"ts":1687753724618,"action":"FILE_CLOSED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"51"}}
+{"ts":1687753724618,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687753759400,"action":"IDE_DEACTIVATED"}
+{"ts":1687753759602,"action":"IDE_ACTIVATED"}
+{"ts":1687753771623,"action":"IDE_DEACTIVATED"}
+{"ts":1687753773924,"action":"IDE_ACTIVATED"}
+{"ts":1687753775015,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687753788330,"action":"IDE_DEACTIVATED"}
+{"ts":1687753909324,"action":"IDE_ACTIVATED"}
+{"ts":1687753917665,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687753930173,"action":"IDE_DEACTIVATED"}
+{"ts":1687753950200,"action":"IDE_ACTIVATED"}
+{"ts":1687753985553,"action":"IDE_DEACTIVATED"}
+{"ts":1687753998953,"action":"IDE_ACTIVATED"}
+{"ts":1687754019580,"action":"IDE_DEACTIVATED"}
+{"ts":1687754064458,"action":"IDE_ACTIVATED"}
+{"ts":1687754101124,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687754101288,"action":"PROJECT_CLOSED","tags":{"PROJECT_NAME":"MicroLauncher"}}
+{"ts":1687759743260,"action":"FILE_OPENED","file":"/app/src/main/res/layout/app_list_item_grid.xml","tags":{"FILE_LINE_OF_CODE":"36"}}
+{"ts":1687759745668,"action":"PROJECT_OPENED","tags":{"PROJECT_NAME":"MicroLauncher"}}
+{"ts":1687759749093,"action":"FILE_CLOSED","file":"/app/src/main/res/layout/app_list_item_grid.xml","tags":{"FILE_LINE_OF_CODE":"36"}}
+{"ts":1687759749093,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687759758348,"action":"IDE_DEACTIVATED"}
+{"ts":1687759903631,"action":"IDE_ACTIVATED"}
+{"ts":1687759904533,"action":"IDE_DEACTIVATED"}
+{"ts":1687760017556,"action":"IDE_ACTIVATED"}
+{"ts":1687760035423,"action":"IDE_DEACTIVATED"}
+{"ts":1687760038967,"action":"IDE_ACTIVATED"}
+{"ts":1687760039288,"action":"IDE_DEACTIVATED"}
+{"ts":1687760040298,"action":"IDE_ACTIVATED"}
+{"ts":1687760045047,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687760047972,"action":"IDE_DEACTIVATED"}
+{"ts":1687760050736,"action":"IDE_ACTIVATED"}
+{"ts":1687760058913,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687760069840,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687760069940,"action":"PROJECT_CLOSED","tags":{"PROJECT_NAME":"MicroLauncher"}}
+{"ts":1687760072457,"action":"FILE_OPENED","file":"/app/src/main/res/layout/app_list_item_grid.xml","tags":{"FILE_LINE_OF_CODE":"36"}}
+{"ts":1687760073405,"action":"IDE_DEACTIVATED"}
+{"ts":1687760074515,"action":"PROJECT_OPENED","tags":{"PROJECT_NAME":"MicroLauncher"}}
+{"ts":1687760102130,"action":"IDE_ACTIVATED"}
+{"ts":1687760102727,"action":"FILE_CLOSED","file":"/app/src/main/res/layout/app_list_item_grid.xml","tags":{"FILE_LINE_OF_CODE":"36"}}
+{"ts":1687760102727,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687760118917,"action":"IDE_DEACTIVATED"}
+{"ts":1687760147948,"action":"IDE_ACTIVATED"}
+{"ts":1687760185584,"action":"IDE_DEACTIVATED"}
+{"ts":1687760189317,"action":"IDE_ACTIVATED"}
+{"ts":1687760199293,"action":"IDE_DEACTIVATED"}
+{"ts":1687760199446,"action":"IDE_ACTIVATED"}
+{"ts":1687760213323,"action":"IDE_DEACTIVATED"}
+{"ts":1687760215237,"action":"IDE_ACTIVATED"}
+{"ts":1687760269062,"action":"IDE_DEACTIVATED"}
+{"ts":1687760284160,"action":"IDE_ACTIVATED"}
+{"ts":1687760298916,"action":"IDE_DEACTIVATED"}
+{"ts":1687760331381,"action":"IDE_ACTIVATED"}
+{"ts":1687760383382,"action":"IDE_DEACTIVATED"}
+{"ts":1687760404215,"action":"IDE_ACTIVATED"}
+{"ts":1687760413593,"action":"IDE_DEACTIVATED"}
+{"ts":1687760419981,"action":"IDE_ACTIVATED"}
+{"ts":1687760435004,"action":"IDE_DEACTIVATED"}
+{"ts":1687760456089,"action":"IDE_ACTIVATED"}
+{"ts":1687760477501,"action":"IDE_DEACTIVATED"}
+{"ts":1687760489386,"action":"IDE_ACTIVATED"}
+{"ts":1687760489813,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687760489813,"action":"FILE_OPENED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"51"}}
+{"ts":1687760490653,"action":"FILE_CLOSED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"51"}}
+{"ts":1687760490653,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687760492040,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687760492040,"action":"FILE_OPENED","file":"/build.gradle","tags":{"FILE_LINE_OF_CODE":"27"}}
+{"ts":1687760533745,"action":"IDE_DEACTIVATED"}
+{"ts":1687760566852,"action":"IDE_ACTIVATED"}
+{"ts":1687760569962,"action":"IDE_DEACTIVATED"}
+{"ts":1687760576689,"action":"IDE_ACTIVATED"}
+{"ts":1687760594913,"action":"IDE_DEACTIVATED"}
+{"ts":1687760612663,"action":"IDE_ACTIVATED"}
+{"ts":1687760614408,"action":"FILE_CLOSED","file":"/build.gradle","tags":{"FILE_LINE_OF_CODE":"25"}}
+{"ts":1687760614408,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687760640663,"action":"IDE_DEACTIVATED"}
+{"ts":1687760791572,"action":"IDE_ACTIVATED"}
+{"ts":1687760791698,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687760791698,"action":"FILE_OPENED","file":"/app/src/main/assets/privacy.html","tags":{"FILE_LINE_OF_CODE":"102"}}
+{"ts":1687760792422,"action":"FILE_CLOSED","file":"/app/src/main/assets/privacy.html","tags":{"FILE_LINE_OF_CODE":"102"}}
+{"ts":1687760792422,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"23"}}
+{"ts":1687760824377,"action":"IDE_DEACTIVATED"}
+{"ts":1687760884019,"action":"IDE_ACTIVATED"}
+{"ts":1687760884295,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"24"}}
+{"ts":1687760884295,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687760891036,"action":"IDE_DEACTIVATED"}
+{"ts":1687760893667,"action":"IDE_ACTIVATED"}
+{"ts":1687760921808,"action":"IDE_DEACTIVATED"}
+{"ts":1687761021984,"action":"IDE_ACTIVATED"}
+{"ts":1687761025450,"action":"IDE_DEACTIVATED"}
+{"ts":1687761052467,"action":"IDE_ACTIVATED"}
+{"ts":1687761057832,"action":"IDE_DEACTIVATED"}
+{"ts":1687761063209,"action":"IDE_ACTIVATED"}
+{"ts":1687761074572,"action":"IDE_DEACTIVATED"}
+{"ts":1687761082292,"action":"IDE_ACTIVATED"}
+{"ts":1687761132020,"action":"IDE_DEACTIVATED"}
+{"ts":1687761147649,"action":"IDE_ACTIVATED"}
+{"ts":1687761175538,"action":"IDE_DEACTIVATED"}
+{"ts":1687761191153,"action":"IDE_ACTIVATED"}
+{"ts":1687761207469,"action":"IDE_DEACTIVATED"}
+{"ts":1687761228675,"action":"IDE_ACTIVATED"}
+{"ts":1687761254557,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"77"}}
+{"ts":1687761254557,"action":"FILE_OPENED","file":"/build.gradle","tags":{"FILE_LINE_OF_CODE":"25"}}
+{"ts":1687761281195,"action":"IDE_DEACTIVATED"}
+{"ts":1687761301335,"action":"IDE_ACTIVATED"}
+{"ts":1687761308092,"action":"IDE_DEACTIVATED"}
+{"ts":1687761321994,"action":"IDE_ACTIVATED"}
+{"ts":1687761332898,"action":"FILE_CLOSED","file":"/build.gradle","tags":{"FILE_LINE_OF_CODE":"25"}}
+{"ts":1687761332898,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"77"}}
+{"ts":1687761355957,"action":"IDE_DEACTIVATED"}
+{"ts":1687761385195,"action":"IDE_ACTIVATED"}
+{"ts":1687761435709,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"77"}}
+{"ts":1687761435709,"action":"FILE_OPENED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"51"}}
+{"ts":1687761452838,"action":"IDE_DEACTIVATED"}
+{"ts":1687761454541,"action":"IDE_ACTIVATED"}
+{"ts":1687761467909,"action":"IDE_DEACTIVATED"}
+{"ts":1687761475049,"action":"IDE_ACTIVATED"}
+{"ts":1687761604054,"action":"IDE_DEACTIVATED"}
+{"ts":1687761651431,"action":"IDE_ACTIVATED"}
+{"ts":1687761655159,"action":"FILE_CLOSED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"52"}}
+{"ts":1687761655159,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"77"}}
+{"ts":1687761656236,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"77"}}
+{"ts":1687761656236,"action":"FILE_OPENED","file":"/build.gradle","tags":{"FILE_LINE_OF_CODE":"25"}}
+{"ts":1687761679377,"action":"IDE_DEACTIVATED"}
+{"ts":1687761687704,"action":"IDE_ACTIVATED"}
+{"ts":1687761696252,"action":"IDE_DEACTIVATED"}
+{"ts":1687761703784,"action":"IDE_ACTIVATED"}
+{"ts":1687761714341,"action":"IDE_DEACTIVATED"}
+{"ts":1687761793529,"action":"IDE_ACTIVATED"}
+{"ts":1687761793789,"action":"FILE_CLOSED","file":"/build.gradle","tags":{"FILE_LINE_OF_CODE":"29"}}
+{"ts":1687761794509,"action":"FILE_OPENED","file":"/gradle.properties","tags":{"FILE_LINE_OF_CODE":"19"}}
+{"ts":1687761819285,"action":"IDE_DEACTIVATED"}
+{"ts":1687761820853,"action":"IDE_ACTIVATED"}
+{"ts":1687761841135,"action":"IDE_DEACTIVATED"}
+{"ts":1687761851713,"action":"IDE_ACTIVATED"}
+{"ts":1687761875435,"action":"IDE_DEACTIVATED"}
+{"ts":1687761878800,"action":"IDE_ACTIVATED"}
+{"ts":1687761937005,"action":"IDE_DEACTIVATED"}
+{"ts":1687761940873,"action":"IDE_ACTIVATED"}
+{"ts":1687761941606,"action":"FILE_CLOSED","file":"/gradle.properties","tags":{"FILE_LINE_OF_CODE":"21"}}
+{"ts":1687761941606,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"77"}}
+{"ts":1687761961782,"action":"IDE_DEACTIVATED"}
+{"ts":1687761992907,"action":"IDE_ACTIVATED"}
+{"ts":1687762019098,"action":"IDE_DEACTIVATED"}
+{"ts":1687762046350,"action":"IDE_ACTIVATED"}
+{"ts":1687762049257,"action":"IDE_DEACTIVATED"}
+{"ts":1687762058295,"action":"IDE_ACTIVATED"}
+{"ts":1687762059218,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"77"}}
+{"ts":1687762059218,"action":"FILE_OPENED","file":"/gradle.properties","tags":{"FILE_LINE_OF_CODE":"21"}}
+{"ts":1687762102290,"action":"IDE_DEACTIVATED"}
+{"ts":1687762107082,"action":"IDE_ACTIVATED"}
+{"ts":1687762125944,"action":"IDE_DEACTIVATED"}
+{"ts":1687762130447,"action":"IDE_ACTIVATED"}
+{"ts":1687762166660,"action":"FILE_CLOSED","file":"/gradle.properties","tags":{"FILE_LINE_OF_CODE":"26"}}
+{"ts":1687762166660,"action":"FILE_OPENED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"52"}}
+{"ts":1687762167240,"action":"FILE_CLOSED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"52"}}
+{"ts":1687762167240,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"77"}}
+{"ts":1687762177295,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"77"}}
+{"ts":1687762177295,"action":"FILE_OPENED","file":"/build.gradle","tags":{"FILE_LINE_OF_CODE":"29"}}
+{"ts":1687762212410,"action":"IDE_DEACTIVATED"}
+{"ts":1687762212552,"action":"IDE_ACTIVATED"}
+{"ts":1687762240051,"action":"IDE_DEACTIVATED"}
+{"ts":1687762267011,"action":"IDE_ACTIVATED"}
+{"ts":1687762292978,"action":"IDE_DEACTIVATED"}
+{"ts":1687762300822,"action":"IDE_ACTIVATED"}
+{"ts":1687762308313,"action":"IDE_DEACTIVATED"}
+{"ts":1687762818218,"action":"IDE_ACTIVATED"}
+{"ts":1687762819821,"action":"IDE_DEACTIVATED"}
+{"ts":1687763054249,"action":"IDE_ACTIVATED"}
+{"ts":1687763054478,"action":"FILE_CLOSED","file":"/build.gradle","tags":{"FILE_LINE_OF_CODE":"25"}}
+{"ts":1687763054478,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"77"}}
+{"ts":1687763067283,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"72"}}
+{"ts":1687763067283,"action":"FILE_OPENED","file":"/gradle/wrapper/gradle-wrapper.properties","tags":{"FILE_LINE_OF_CODE":"7"}}
+{"ts":1687763071763,"action":"IDE_DEACTIVATED"}
+{"ts":1687763098972,"action":"IDE_ACTIVATED"}
+{"ts":1687763108837,"action":"IDE_DEACTIVATED"}
+{"ts":1687763260556,"action":"IDE_ACTIVATED"}
+{"ts":1687763260827,"action":"FILE_CLOSED","file":"/gradle/wrapper/gradle-wrapper.properties","tags":{"FILE_LINE_OF_CODE":"7"}}
+{"ts":1687763260827,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"72"}}
+{"ts":1687763277690,"action":"IDE_DEACTIVATED"}
+{"ts":1687763283231,"action":"IDE_ACTIVATED"}
+{"ts":1687763294407,"action":"IDE_DEACTIVATED"}
+{"ts":1687763305138,"action":"IDE_ACTIVATED"}
+{"ts":1687763374110,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687763374110,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"24"}}
+{"ts":1687763380011,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"23"}}
+{"ts":1687763380011,"action":"FILE_OPENED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"134"}}
+{"ts":1687763433504,"action":"FILE_CLOSED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687763433504,"action":"FILE_OPENED","file":"/app/src/main/assets/privacy.html","tags":{"FILE_LINE_OF_CODE":"102"}}
+{"ts":1687763596288,"action":"IDE_DEACTIVATED"}
+{"ts":1687763611312,"action":"IDE_ACTIVATED"}
+{"ts":1687763681562,"action":"IDE_DEACTIVATED"}
+{"ts":1687763683890,"action":"IDE_ACTIVATED"}
+{"ts":1687763718519,"action":"IDE_DEACTIVATED"}
+{"ts":1687763723197,"action":"IDE_ACTIVATED"}
+{"ts":1687763733641,"action":"IDE_DEACTIVATED"}
+{"ts":1687763739741,"action":"IDE_ACTIVATED"}
+{"ts":1687763749160,"action":"IDE_DEACTIVATED"}
+{"ts":1687763752344,"action":"IDE_ACTIVATED"}
+{"ts":1687763757391,"action":"IDE_DEACTIVATED"}
+{"ts":1687763761508,"action":"IDE_ACTIVATED"}
+{"ts":1687763769856,"action":"IDE_DEACTIVATED"}
+{"ts":1687763776450,"action":"IDE_ACTIVATED"}
+{"ts":1687763778571,"action":"IDE_DEACTIVATED"}
+{"ts":1687763780922,"action":"IDE_ACTIVATED"}
+{"ts":1687763794850,"action":"IDE_DEACTIVATED"}
+{"ts":1687763794996,"action":"IDE_ACTIVATED"}
+{"ts":1687763838649,"action":"FILE_CLOSED","file":"/app/src/main/assets/privacy.html","tags":{"FILE_LINE_OF_CODE":"104"}}
+{"ts":1687763838649,"action":"FILE_OPENED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687763841749,"action":"IDE_DEACTIVATED"}
+{"ts":1687763853495,"action":"IDE_ACTIVATED"}
+{"ts":1687763853723,"action":"FILE_CLOSED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687763853723,"action":"FILE_OPENED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"52"}}
+{"ts":1687763891166,"action":"IDE_DEACTIVATED"}
+{"ts":1687764040564,"action":"IDE_ACTIVATED"}
+{"ts":1687764046046,"action":"IDE_DEACTIVATED"}
+{"ts":1687764078949,"action":"IDE_ACTIVATED"}
+{"ts":1687764086510,"action":"FILE_CLOSED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"52"}}
+{"ts":1687764086510,"action":"FILE_OPENED","file":"/gradle.properties","tags":{"FILE_LINE_OF_CODE":"26"}}
+{"ts":1687764088370,"action":"FILE_CLOSED","file":"/gradle.properties","tags":{"FILE_LINE_OF_CODE":"26"}}
+{"ts":1687764088370,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687764094618,"action":"IDE_DEACTIVATED"}
+{"ts":1687764099893,"action":"IDE_ACTIVATED"}
+{"ts":1687764106682,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687764106682,"action":"FILE_OPENED","file":"/build.gradle","tags":{"FILE_LINE_OF_CODE":"25"}}
+{"ts":1687764111348,"action":"FILE_CLOSED","file":"/build.gradle","tags":{"FILE_LINE_OF_CODE":"25"}}
+{"ts":1687764111348,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687764123973,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687764123973,"action":"FILE_OPENED","file":"/app/src/main/assets/privacy.html","tags":{"FILE_LINE_OF_CODE":"104"}}
+{"ts":1687764160489,"action":"IDE_DEACTIVATED"}
+{"ts":1687764162546,"action":"IDE_ACTIVATED"}
+{"ts":1687764183654,"action":"IDE_DEACTIVATED"}
+{"ts":1687764198326,"action":"IDE_ACTIVATED"}
+{"ts":1687764203043,"action":"IDE_DEACTIVATED"}
+{"ts":1687764207172,"action":"IDE_ACTIVATED"}
+{"ts":1687764211081,"action":"IDE_DEACTIVATED"}
+{"ts":1687764216607,"action":"IDE_ACTIVATED"}
+{"ts":1687764282767,"action":"IDE_DEACTIVATED"}
+{"ts":1687764329505,"action":"IDE_ACTIVATED"}
+{"ts":1687764329734,"action":"FILE_CLOSED","file":"/app/src/main/assets/privacy.html","tags":{"FILE_LINE_OF_CODE":"104"}}
+{"ts":1687764329734,"action":"FILE_OPENED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687764352756,"action":"IDE_DEACTIVATED"}
+{"ts":1687764352876,"action":"IDE_ACTIVATED"}
+{"ts":1687764383885,"action":"IDE_DEACTIVATED"}
+{"ts":1687764384024,"action":"IDE_ACTIVATED"}
+{"ts":1687764421723,"action":"FILE_CLOSED","file":"/app/build.gradle","tags":{"FILE_LINE_OF_CODE":"76"}}
+{"ts":1687764421723,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"23"}}
+{"ts":1687764444848,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"25"}}
+{"ts":1687764444848,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"460"}}
+{"ts":1687764453914,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"460"}}
+{"ts":1687764453914,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"25"}}
+{"ts":1687764529030,"action":"IDE_DEACTIVATED"}
+{"ts":1687764529196,"action":"IDE_ACTIVATED"}
+{"ts":1687764580544,"action":"IDE_DEACTIVATED"}
+{"ts":1687764591551,"action":"IDE_ACTIVATED"}
+{"ts":1687765379423,"action":"IDE_DEACTIVATED"}
+{"ts":1687766264279,"action":"IDE_ACTIVATED"}
+{"ts":1687766287271,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"47"}}
+{"ts":1687766287271,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/utils/BuglyUtils.java","tags":{"FILE_LINE_OF_CODE":"3"}}
+{"ts":1687766329134,"action":"IDE_DEACTIVATED"}
+{"ts":1687766344689,"action":"IDE_ACTIVATED"}
+{"ts":1687766351517,"action":"IDE_DEACTIVATED"}
+{"ts":1687766351647,"action":"IDE_ACTIVATED"}
+{"ts":1687766387964,"action":"IDE_DEACTIVATED"}
+{"ts":1687766406190,"action":"IDE_ACTIVATED"}
+{"ts":1687766467944,"action":"IDE_DEACTIVATED"}
+{"ts":1687766471662,"action":"IDE_ACTIVATED"}
+{"ts":1687766559399,"action":"IDE_DEACTIVATED"}
+{"ts":1687766633596,"action":"IDE_ACTIVATED"}
+{"ts":1687766641903,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/utils/BuglyUtils.java","tags":{"FILE_LINE_OF_CODE":"19"}}
+{"ts":1687766641903,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"47"}}
+{"ts":1687766654805,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"43"}}
+{"ts":1687766654805,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/utils/BuglyUtils.java","tags":{"FILE_LINE_OF_CODE":"19"}}
+{"ts":1687766664112,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/utils/BuglyUtils.java","tags":{"FILE_LINE_OF_CODE":"19"}}
+{"ts":1687766664112,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"43"}}
+{"ts":1687766697389,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"45"}}
+{"ts":1687766697389,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"460"}}
+{"ts":1687766731148,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"461"}}
+{"ts":1687766731148,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/utils/BuglyUtils.java","tags":{"FILE_LINE_OF_CODE":"19"}}
+{"ts":1687766762579,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/utils/BuglyUtils.java","tags":{"FILE_LINE_OF_CODE":"21"}}
+{"ts":1687766762579,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"45"}}
+{"ts":1687766766427,"action":"IDE_DEACTIVATED"}
+{"ts":1687766808628,"action":"IDE_ACTIVATED"}
+{"ts":1687766809651,"action":"IDE_DEACTIVATED"}
+{"ts":1687766814374,"action":"IDE_ACTIVATED"}
+{"ts":1687766816805,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"45"}}
+{"ts":1687766816805,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"461"}}
+{"ts":1687766875241,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"464"}}
+{"ts":1687766875241,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"45"}}
+{"ts":1687766885513,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"45"}}
+{"ts":1687766885513,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/utils/BuglyUtils.java","tags":{"FILE_LINE_OF_CODE":"21"}}
+{"ts":1687766886573,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/utils/BuglyUtils.java","tags":{"FILE_LINE_OF_CODE":"21"}}
+{"ts":1687766886573,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"45"}}
+{"ts":1687766887343,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"45"}}
+{"ts":1687766887343,"action":"FILE_OPENED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687766888572,"action":"FILE_CLOSED","file":"/app/src/main/AndroidManifest.xml","tags":{"FILE_LINE_OF_CODE":"135"}}
+{"ts":1687766888572,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/utils/BuglyUtils.java","tags":{"FILE_LINE_OF_CODE":"21"}}
+{"ts":1687766890009,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/utils/BuglyUtils.java","tags":{"FILE_LINE_OF_CODE":"21"}}
+{"ts":1687766890009,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"464"}}
+{"ts":1687766893973,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"464"}}
+{"ts":1687766893973,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"45"}}
+{"ts":1687766903606,"action":"IDE_DEACTIVATED"}
+{"ts":1687766903765,"action":"IDE_ACTIVATED"}
+{"ts":1687766916621,"action":"IDE_DEACTIVATED"}
+{"ts":1687766919819,"action":"IDE_ACTIVATED"}
+{"ts":1687766932796,"action":"IDE_DEACTIVATED"}
+{"ts":1687766934439,"action":"IDE_ACTIVATED"}
+{"ts":1687766949431,"action":"IDE_DEACTIVATED"}
+{"ts":1687766956187,"action":"IDE_ACTIVATED"}
+{"ts":1687766978985,"action":"IDE_DEACTIVATED"}
+{"ts":1687766987932,"action":"IDE_ACTIVATED"}
+{"ts":1687767035514,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java","tags":{"FILE_LINE_OF_CODE":"45"}}
+{"ts":1687767035514,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/widgets/ClockViewManager.java","tags":{"FILE_LINE_OF_CODE":"60"}}
+{"ts":1687767053616,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/widgets/ClockViewManager.java","tags":{"FILE_LINE_OF_CODE":"60"}}
+{"ts":1687767053616,"action":"FILE_OPENED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"464"}}
+{"ts":1687767076394,"action":"IDE_DEACTIVATED"}
+{"ts":1687767092508,"action":"IDE_ACTIVATED"}
+{"ts":1687767101589,"action":"IDE_DEACTIVATED"}
+{"ts":1687767102256,"action":"IDE_ACTIVATED"}
+{"ts":1687767180721,"action":"IDE_DEACTIVATED"}
+{"ts":1687767180915,"action":"IDE_ACTIVATED"}
+{"ts":1687767315243,"action":"IDE_DEACTIVATED"}
+{"ts":1687767325634,"action":"IDE_ACTIVATED"}
+{"ts":1687767331001,"action":"IDE_DEACTIVATED"}
+{"ts":1687767335936,"action":"IDE_ACTIVATED"}
+{"ts":1687767336816,"action":"IDE_DEACTIVATED"}
+{"ts":1687767337176,"action":"IDE_ACTIVATED"}
+{"ts":1687767339039,"action":"IDE_DEACTIVATED"}
+{"ts":1687767348407,"action":"IDE_ACTIVATED"}
+{"ts":1687767354067,"action":"IDE_DEACTIVATED"}
+{"ts":1687767354211,"action":"IDE_ACTIVATED"}
+{"ts":1687767357511,"action":"IDE_DEACTIVATED"}
+{"ts":1687767365590,"action":"IDE_ACTIVATED"}
+{"ts":1687767407079,"action":"IDE_DEACTIVATED"}
+{"ts":1687767419864,"action":"IDE_ACTIVATED"}
+{"ts":1687767425130,"action":"FILE_CLOSED","file":"/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java","tags":{"FILE_LINE_OF_CODE":"464"}}
+{"ts":1687767425130,"action":"FILE_OPENED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"52"}}
+{"ts":1687767425854,"action":"FILE_CLOSED","file":"/app/proguard-rules.pro","tags":{"FILE_LINE_OF_CODE":"52"}}
+{"ts":1687767425854,"action":"FILE_OPENED","file":"/gradle.properties","tags":{"FILE_LINE_OF_CODE":"26"}}
+{"ts":1687767470055,"action":"FILE_CLOSED","file":"/gradle.properties","tags":{"FILE_LINE_OF_CODE":"21"}}
+{"ts":1687767470055,"action":"FILE_OPENED","file":"/.gitignore","tags":{"FILE_LINE_OF_CODE":"16"}}
diff --git a/app/build.gradle b/app/build.gradle
index 4cd0743..8c6a7b1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,3 +1,5 @@
+import java.text.SimpleDateFormat
+
plugins {
id 'com.android.application'
}
@@ -6,14 +8,21 @@ android {
android.defaultConfig.vectorDrawables.useSupportLibrary = true
compileSdk 32
+ def buildSerial = new SimpleDateFormat("MMddHHmm").format(new Date())
+
defaultConfig {
applicationId "org.exthmui.microlauncher.duoqin"
minSdkVersion 26
targetSdkVersion 32
versionCode 20000
- versionName "1.1.0"
+ versionName "1.1.0-${buildSerial}"
+ flavorDimensions "channel"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ ndk {
+ // 设置支持的SO库架构,不设置时默认支持全部架构
+ abiFilters 'armeabi' , 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
+ }
}
viewBinding{
@@ -27,10 +36,23 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
+
+ productFlavors {
+ coolapk {
+ manifestPlaceholders = [BUGLY_APP_CHANNEL: "coolapk"]
+ dimension = "channel"
+ }
+ github {
+ manifestPlaceholders = [BUGLY_APP_CHANNEL: "github"]
+ dimension = "channel"
+ }
+ }
+
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
+ namespace 'org.exthmui.microlauncher.duoqin'
}
dependencies {
@@ -44,9 +66,10 @@ dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.preference:preference:1.2.0'
implementation 'pub.devrel:easypermissions:3.0.0'
+ implementation 'com.tencent.bugly:crashreport:4.0.4'
testImplementation 'junit:junit:4.13.2'
- androidTestImplementation 'androidx.test.ext:junit:1.1.3'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.5'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation 'com.github.GrenderG:Toasty:1.5.2'
implementation 'io.github.medyo:android-about-page:2.0.0'
implementation 'de.psdev.licensesdialog:licensesdialog:2.1.0'
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 7209133..0368fbf 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -45,4 +45,7 @@
public static *** e(...);
}
--renamesourcefileattribute SourceFile
\ No newline at end of file
+-renamesourcefileattribute SourceFile
+
+-dontwarn com.tencent.bugly.**
+-keep public class com.tencent.bugly.**{*;}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ad14c22..efe5016 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,7 +1,6 @@
+ xmlns:tools="http://schemas.android.com/tools">
@@ -13,6 +12,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/privacy.html b/app/src/main/assets/privacy.html
new file mode 100644
index 0000000..198e85d
--- /dev/null
+++ b/app/src/main/assets/privacy.html
@@ -0,0 +1,104 @@
+
+
+ 隐私政策
+
+
+ 隐私政策
+ 更新日期:2023/6/26
+ 生效日期:2023/6/26
+ 导言
+
+ 微型启动器多亲版 是一款由 Yuyuko1024 (以下简称“我们”)提供的 Android 端软件产品。
+ 您在使用我们的服务时,我们可能会收集和使用您的相关信息。我们希望通过本《隐私政策》向您说明,在使用我们的服务时,我们如何收集、使用、储存和分享这些信息,以及我们为您提供的访问、更新、控制和保护这些信息的方式。
+ 本《隐私政策》与您所使用的 微型启动器多亲版 服务息息相关,希望您仔细阅读,在需要时,按照本《隐私政策》的指引,作出您认为适当的选择。本《隐私政策》中涉及的相关技术词汇,我们尽量以简明扼要的表述,并提供进一步说明的链接,以便您的理解。
+
+ 您使用或继续使用我们的服务,即意味着同意我们按照本《隐私政策》收集、使用、储存和分享您的相关信息。
+ 如对本《隐私政策》或相关事宜有任何问题,请通过 3033715907@qq.com 或者 GitHub 与我们联系。
+
+ 1. 我们收集的信息
+ 我们或我们的第三方合作伙伴提供服务时,可能会收集、储存和使用下列与您有关的信息。如果您不提供相关信息,可能无法无法达到相关后续维护服务拟达到的效果。
+
+
+ - 软件运行日志信息,指您使用我们的服务时,软件可能通过使用内嵌的腾讯 Bugly SDK采集您的设备标识符及运行日志以及相关技术收集的信息,包括您的设备信息、运行和错误日志等,并将该等信息储存为日志信息,为您提供后续的软件用户体验和维护。您可以通过本页面拒绝标识符或相关技术的使用。
+
+
+ 有关腾讯 Bugly SDK的一些服务条款,请参阅 Bugly SDK个人信息保护规则
+
+
+ 2. 信息的存储
+ 2.1 信息存储的方式和期限
+
+ - 我们会通过安全的方式存储您的信息,包括本地存储(例如利用APP进行数据缓存)、数据库和服务器日志。
+ - 一般情况下,我们只会在为实现服务目的所必需的时间内或法律法规规定的条件下存储您的个人信息。
+
+
+ 2.2 信息存储的地域
+
+ - 我们会按照法律法规规定,将境内收集的用户个人信息存储于中国境内。
+ - 目前我们不会跨境传输或存储您的个人信息。将来如需跨境传输或存储的,我们会向您告知信息出境的目的、接收方、安全保证措施和安全风险,并征得您的同意。
+
+
+ 2.3 产品或服务停止运营时的通知
+
+ - 当我们的产品或服务发生停止运营的情况时,我们将以推送通知、公告等形式通知您,并在合理期限内删除您的个人信息或进行匿名化处理,法律法规另有规定的除外。
+
+
+ 3. 信息安全
+
+ 我们使用各种安全技术和程序,以防信息的丢失、不当使用、未经授权阅览或披露。例如,在某些服务中,我们将利用加密技术(例如SSL)来保护您提供的个人信息。但请您理解,由于技术的限制以及可能存在的各种恶意手段,在互联网行业,即便竭尽所能加强安全措施,也不可能始终保证信息百分之百的安全。您需要了解,您接入我们的服务所用的系统和通讯网络,有可能因我们可控范围外的因素而出现问题。
+
+
+ 4. 我们如何使用信息
+ 我们可能将在向您提供服务的过程之中所收集的信息用作下列用途:
+
+ - 向您提供服务;
+ - 在我们提供服务时,用于身份验证、客户服务、安全防范、诈骗监测、存档和备份用途,确保我们向您提供的产品和服务的安全性;
+ - 帮助我们设计新服务,改善我们现有服务;
+ - 使我们更加了解您如何接入和使用我们的服务,从而针对性地回应您的个性化需求,例如语言设定、位置设定、个性化的帮助服务和指示,或对您和其他用户作出其他方面的回应;
+ - 软件认证或管理软件升级;
+ - 让您参与有关我们产品和服务的调查。
+
+
+ 5. 信息共享
+
+ 目前,我们不会主动共享或转让您的个人信息至第三方,如存在其他共享或转让您的个人信息或您需要我们将您的个人信息共享或转让至第三方情形时,我们会直接或确认第三方征得您对上述行为的明示同意。
+
+
+ 我们不会向合作伙伴分享可用于识别您个人身份的信息(例如您的姓名或电子邮件地址),除非您明确授权。
+
+
+ 我们不会对外公开披露所收集的个人信息,如必须公开披露时,我们会向您告知此次公开披露的目的、披露信息的类型及可能涉及的敏感信息,并征得您的明示同意。
+
+
+ 随着我们业务的持续发展,我们有可能进行合并、收购、资产转让等交易,我们将告知您相关情形,按照法律法规及不低于本《隐私政策》所要求的标准继续保护或要求新的控制者继续保护您的个人信息。
+
+
+ 另外,根据相关法律法规及国家标准,以下情形中,我们可能会共享、转让、公开披露个人信息无需事先征得您的授权同意:
+
+
+ - 与国家安全、国防安全直接相关的;
+ - 与公共安全、公共卫生、重大公共利益直接相关的;
+ - 犯罪侦查、起诉、审判和判决执行等直接相关的;
+ - 出于维护个人信息主体或其他个人的生命、财产等重大合法权益但又很难得到本人同意的;
+ - 个人信息主体自行向社会公众公开个人信息的;
+ - 从合法公开披露的信息中收集个人信息的,如合法的新闻报道、政府信息公开等渠道。
+
+
+ 6. 您的权利
+
+ 在您使用我们的服务期间,我们可能会视产品具体情况为您提供相应的操作设置,以便您可以查询、删除、更正或撤回您的相关个人信息,您可参考相应的具体指引进行操作。此外,我们还设置了投诉举报渠道,您的意见将会得到及时的处理。如果您无法通过上述途径和方式行使您的个人信息主体权利,您可以通过本《隐私政策》中提供的联系方式提出您的请求,我们会按照法律法规的规定予以反馈。
+
+
+
+ 7. 变更
+
+ 我们可能适时修订本《隐私政策》的条款。当变更发生时,我们会在版本更新时向您提示新的《隐私政策》,并向您说明生效日期。请您仔细阅读变更后的《隐私政策》内容,若您继续使用我们的服务,即表示您同意我们按照更新后的《隐私政策》处理您的个人信息。
+
+
+ 8. 未成年人保护
+
+ 我们鼓励父母或监护人指导未满十八岁的未成年人使用我们的服务。我们建议未成年人鼓励他们的父母或监护人阅读本《隐私政策》,并建议未成年人在提交的个人信息之前寻求父母或监护人的同意和指导。
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java b/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java
index 3c1876d..eefeacd 100644
--- a/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java
+++ b/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/MainActivity.java
@@ -30,6 +30,7 @@
import org.exthmui.microlauncher.duoqin.BuildConfig;
import org.exthmui.microlauncher.duoqin.R;
import org.exthmui.microlauncher.duoqin.databinding.ActivityMainBinding;
+import org.exthmui.microlauncher.duoqin.utils.BuglyUtils;
import org.exthmui.microlauncher.duoqin.widgets.CallSmsCounter;
import org.exthmui.microlauncher.duoqin.widgets.CarrierTextView;
import org.exthmui.microlauncher.duoqin.widgets.ClockViewManager;
@@ -51,6 +52,7 @@ public class MainActivity extends AppCompatActivity implements SharedPreferences
private boolean xiaoai_enable;
private boolean dialpad_enable;
private boolean callsms_counter;
+ private boolean bugly_init;
private boolean torch = false;
private String clock_locate;
private CameraManager manager;
@@ -184,6 +186,14 @@ private void loadSettings(){
mainBinding.clock.textClock.setTextSize(Float.parseFloat(clock_size));
xiaoai_enable = sharedPreferences.getBoolean("preference_main_xiaoai_ai",true);
dialpad_enable = sharedPreferences.getBoolean("preference_dial_pad",true);
+ bugly_init = sharedPreferences.getBoolean("bugly_init",false);
+ if(bugly_init){
+ BuglyUtils.initBugly(this);
+ } else {
+ Intent intent = new Intent(this, PrivacyLicenseActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(intent);
+ }
}
private void setClockLocate(String clockLocate) {
@@ -253,6 +263,9 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin
case "switch_preference_callsms_counter":
callsms_counter = sharedPreferences.getBoolean("switch_preference_callsms_counter",false);
break;
+ case "preference_bugly_init":
+ bugly_init = sharedPreferences.getBoolean("bugly_init",false);
+ break;
}
}
diff --git a/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java b/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java
new file mode 100644
index 0000000..ce0b5fd
--- /dev/null
+++ b/app/src/main/java/org/exthmui/microlauncher/duoqin/activity/PrivacyLicenseActivity.java
@@ -0,0 +1,44 @@
+package org.exthmui.microlauncher.duoqin.activity;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.tencent.bugly.crashreport.CrashReport;
+
+import org.exthmui.microlauncher.duoqin.databinding.ActivityPrivacyPolicyBinding;
+import org.exthmui.microlauncher.duoqin.utils.BuglyUtils;
+
+import es.dmoral.toasty.Toasty;
+
+public class PrivacyLicenseActivity extends AppCompatActivity {
+ private final String LICENSE_URL = "file:///android_asset/privacy.html";
+ private ActivityPrivacyPolicyBinding binding;
+ private SharedPreferences sharedPreferences;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ binding = ActivityPrivacyPolicyBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+ sharedPreferences = getSharedPreferences(getPackageName()+"_preferences", Context.MODE_PRIVATE);
+ binding.webview.loadUrl(LICENSE_URL);
+ binding.accept.setOnClickListener(v -> {
+ sharedPreferences.edit().putBoolean("bugly_init", true).apply();
+ BuglyUtils.initBugly(this);
+ finish();
+ });
+ binding.reject.setOnClickListener(v -> {
+ sharedPreferences.edit().putBoolean("bugly_init", false).apply();
+ finish();
+ });
+ }
+
+ @Override
+ public void onBackPressed() {
+ Toasty.info(this, "请阅读并同意隐私政策!", Toasty.LENGTH_SHORT).show();
+ }
+}
diff --git a/app/src/main/java/org/exthmui/microlauncher/duoqin/utils/BuglyUtils.java b/app/src/main/java/org/exthmui/microlauncher/duoqin/utils/BuglyUtils.java
new file mode 100644
index 0000000..573357b
--- /dev/null
+++ b/app/src/main/java/org/exthmui/microlauncher/duoqin/utils/BuglyUtils.java
@@ -0,0 +1,20 @@
+package org.exthmui.microlauncher.duoqin.utils;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.tencent.bugly.crashreport.CrashReport;
+
+import org.exthmui.microlauncher.duoqin.BuildConfig;
+
+public class BuglyUtils {
+ private static final String TAG = BuglyUtils.class.getSimpleName();
+ public static void initBugly(Context context) {
+ Log.i(TAG, "initBugly: ");
+ CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(context);
+ strategy.setAppReportDelay(10000);
+ CrashReport.initCrashReport(context.getApplicationContext(), strategy);
+ CrashReport.setIsDevelopmentDevice(context, BuildConfig.DEBUG);
+ }
+
+}
diff --git a/app/src/main/res/layout/activity_privacy_policy.xml b/app/src/main/res/layout/activity_privacy_policy.xml
new file mode 100644
index 0000000..58d51c0
--- /dev/null
+++ b/app/src/main/res/layout/activity_privacy_policy.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index ba65b19..843fa82 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,11 +2,10 @@
buildscript {
repositories {
google()
- jcenter()
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.2.0'
+ classpath 'com.android.tools.build:gradle:7.4.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
@@ -16,7 +15,6 @@ buildscript {
allprojects {
repositories {
google()
- jcenter()
mavenCentral()
maven { url "https://jitpack.io" }
}
diff --git a/gradle.properties b/gradle.properties
index 52f5917..934a551 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -6,7 +6,9 @@
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8
+org.gradle.parallel=true
+org.gradle.daemon=true
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 7249063..4ac329d 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Mon Oct 31 19:08:13 CST 2022
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists