From 9f6c360a9afdb3a405ca007f68632be3efab8b7b Mon Sep 17 00:00:00 2001 From: Godfather <981964879@qq.com> Date: Tue, 12 Apr 2022 10:03:39 +0800 Subject: [PATCH] =?UTF-8?q?version:3.9=20fix:=E4=BF=AE=E5=A4=8D=E8=A7=A3?= =?UTF-8?q?=E9=94=81=E5=90=8E=E6=97=A0=E9=99=90=E9=87=8D=E7=BD=AE=E7=9A=84?= =?UTF-8?q?bug=20update:=E6=9B=B4=E6=8D=A2=E5=9B=BE=E6=A0=87=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A7=A3=E9=94=81=E5=90=8E=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=89=80=E6=9C=89app?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AndroidManifest-common.xml | 202 ++++++-- build.gradle | 9 +- res/drawable-hdpi/com_android_appstore.png | Bin 3405 -> 6004 bytes res/drawable-hdpi/com_android_browser.png | Bin 7899 -> 8252 bytes res/drawable-hdpi/com_android_calculator2.png | Bin 3262 -> 5147 bytes res/drawable-hdpi/com_android_calendar.png | Bin 3723 -> 5773 bytes res/drawable-hdpi/com_android_camera.png | Bin 11259 -> 12341 bytes res/drawable-hdpi/com_android_contacts.png | Bin 2803 -> 4056 bytes res/drawable-hdpi/com_android_deskclock.png | Bin 4408 -> 5597 bytes res/drawable-hdpi/com_android_dialer.png | Bin 4775 -> 5341 bytes .../com_android_gallery3d_app.png | Bin 3504 -> 5172 bytes res/drawable-hdpi/com_android_mms_ui.png | Bin 4130 -> 4704 bytes res/drawable-hdpi/com_android_music.png | Bin 4523 -> 6023 bytes res/drawable-hdpi/com_android_settings.png | Bin 6182 -> 7337 bytes .../com_android_soundrecorder.png | Bin 3637 -> 5711 bytes res/drawable-hdpi/com_android_stk_stkmain.png | Bin 3554 -> 4055 bytes res/drawable-hdpi/com_android_vdieo.png | Bin 3376 -> 4346 bytes res/drawable-hdpi/com_aoleyun_info.png | Bin 0 -> 7329 bytes res/drawable-hdpi/com_aoleyun_sn.png | Bin 0 -> 5404 bytes .../com_mediatek_filemanager.png | Bin 3037 -> 3037 bytes res/drawable-hdpi/com_mediatek_fmradio.png | Bin 6733 -> 7125 bytes res/mipmap-hdpi/ic_launcher_home.png | Bin 4104 -> 4102 bytes res/mipmap-mdpi/ic_launcher_home.png | Bin 4104 -> 4102 bytes res/mipmap-xhdpi/ic_launcher_home.png | Bin 4104 -> 4102 bytes res/mipmap-xxhdpi/ic_launcher_home.png | Bin 4104 -> 4102 bytes src/com/aoleyun/os/Launcher.java | 40 +- src/com/aoleyun/os/base/BaseApplication.java | 30 +- .../aoleyun/os/disklrucache/CacheHelper.java | 461 ++++++++++++++++++ .../os/disklrucache/DiskLruCacheHelper.java | 427 ++++++++++++++++ src/com/aoleyun/os/disklrucache/Utils.java | 101 ++++ src/com/aoleyun/os/icons/IconCache.java | 20 +- .../aoleyun/os/manager/ConnectManager.java | 134 +++++ src/com/aoleyun/os/manager/ConnectMode.java | 12 + src/com/aoleyun/os/model/LoaderTask.java | 38 +- .../aoleyun/os/network/NetworkManager.java | 118 ++++- .../os/network/api/GetJpushTagsApi.java | 3 +- src/com/aoleyun/os/network/bean/Batch.java | 17 + src/com/aoleyun/os/tpush/Constants.java | 17 + src/com/aoleyun/os/tpush/MessageReceiver.java | 320 ++++++++++++ .../aoleyun/os/tpush/common/DBOpenHelper.java | 23 + .../os/tpush/common/NotificationService.java | 135 +++++ .../aoleyun/os/tpush/po/XGNotification.java | 83 ++++ src/com/aoleyun/os/uiuiutils/CacheUtils.java | 139 ++++++ src/com/aoleyun/os/uiuiutils/GsonUtils.java | 29 ++ src/com/aoleyun/os/uiuiutils/JGYUtils.java | 18 + src/com/aoleyun/os/uiuiutils/TimeUtils.java | 21 + 46 files changed, 2320 insertions(+), 77 deletions(-) create mode 100644 res/drawable-hdpi/com_aoleyun_info.png create mode 100644 res/drawable-hdpi/com_aoleyun_sn.png create mode 100644 src/com/aoleyun/os/disklrucache/CacheHelper.java create mode 100644 src/com/aoleyun/os/disklrucache/DiskLruCacheHelper.java create mode 100644 src/com/aoleyun/os/disklrucache/Utils.java create mode 100644 src/com/aoleyun/os/manager/ConnectManager.java create mode 100644 src/com/aoleyun/os/manager/ConnectMode.java create mode 100644 src/com/aoleyun/os/network/bean/Batch.java create mode 100644 src/com/aoleyun/os/tpush/Constants.java create mode 100644 src/com/aoleyun/os/tpush/MessageReceiver.java create mode 100644 src/com/aoleyun/os/tpush/common/DBOpenHelper.java create mode 100644 src/com/aoleyun/os/tpush/common/NotificationService.java create mode 100644 src/com/aoleyun/os/tpush/po/XGNotification.java create mode 100644 src/com/aoleyun/os/uiuiutils/CacheUtils.java create mode 100644 src/com/aoleyun/os/uiuiutils/GsonUtils.java diff --git a/AndroidManifest-common.xml b/AndroidManifest-common.xml index d730279..e032b2f 100644 --- a/AndroidManifest-common.xml +++ b/AndroidManifest-common.xml @@ -47,6 +47,26 @@ + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + @@ -347,16 +367,16 @@ - - - - - - - - + + + + + + + + + + @@ -366,5 +386,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build.gradle b/build.gradle index 0f3da9e..471fb73 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,6 @@ buildscript { classpath GRADLE_CLASS_PATH classpath PROTOBUF_CLASS_PATH classpath "com.tencent.android.tpns:tpnsplugin:1.8.0" - } } @@ -66,8 +65,8 @@ android { defaultConfig { minSdkVersion 26 targetSdkVersion 28 - versionCode 22 - versionName "3.1" + versionCode 30 + versionName "3.9" ndk { //选择要添加的对应 cpu 类型的 .so 库。 abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' @@ -317,8 +316,10 @@ dependencies { implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0' //gson implementation 'com.google.code.gson:gson:2.9.0' + //磁盘缓存 + implementation 'com.jakewharton:disklrucache:2.0.2' //mmkv - implementation 'com.tencent:mmkv-static:1.2.12' + implementation 'com.tencent:mmkv-static:1.2.13' //腾讯移动推送 TPNS implementation 'com.tencent.tpns:tpns:1.3.2.0-release' //极光推送 diff --git a/res/drawable-hdpi/com_android_appstore.png b/res/drawable-hdpi/com_android_appstore.png index 4a2e0e9066dd6367bda7d8a7007615862dca886f..033f1c4ca648ba22f9f919ec788509921b9248b2 100644 GIT binary patch delta 5366 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 Q0soGXp1E$5wp;T50h$~oF8}}l delta 2746 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 diff --git a/res/drawable-hdpi/com_android_browser.png b/res/drawable-hdpi/com_android_browser.png index f0c9cb15f134853d3553ab76c75f37bffcf40507..13554a9c6d9b610e64c04d4384559130d45c30fd 100644 GIT binary patch delta 7632 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 AD*ylh diff --git a/res/drawable-hdpi/com_android_calculator2.png b/res/drawable-hdpi/com_android_calculator2.png index 1de3635ed453eb2f7b7ea28fd863e8c450ba13b6..121fc0c669132650f118fb2593ba67f1522251d1 100644 GIT binary patch delta 4502 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 delta 2602 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 GN%{}hapb!I diff --git a/res/drawable-hdpi/com_android_calendar.png b/res/drawable-hdpi/com_android_calendar.png index 07d5a3a5621efa3ea88542afceef5614dfc8db5e..f78cbece8ee48b90999eb275224638064098b26c 100644 GIT binary patch delta 5133 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 GvHt@(^vK8n diff --git a/res/drawable-hdpi/com_android_camera.png b/res/drawable-hdpi/com_android_camera.png index ae2d49780171d58af13f074a6d75069eb96ee8a2..b1fffb16ca2dbce01a9c087713e6397743c57f65 100644 GIT binary patch delta 11753 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 delta 10662 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 H^ymKpm>$FF diff --git a/res/drawable-hdpi/com_android_contacts.png b/res/drawable-hdpi/com_android_contacts.png index fd1f1605a4eacafa47662ffa84c15e3881622163..ffb78682a4c33eec5b77f239702178a22ad22824 100644 GIT binary patch delta 3403 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 jSqO#mhv|MPJO4eZzhh=(1+F%DKpp)*>s^1` delta 2140 zcmZ{gYdq5p8^`%;rXeb%9K)QAvMgs@9%qku1^}viZ5`$84T9Z5od)%TOu$RI2?;X zVjVC@9NZEPH%H?TN6fS|sZr7H?$(avz__SjQmnJ1t=7&278D+2{XZ7-C-&hJ!0i75 zdRtNxfgd^sZ} z+nnND<|q>r-`6Fbmp^?vFM>Cj25VBR{M_zW#yvyvI~ZaN-A|V-S(4S-lbHe$BN9pA57~?~H%yF54+Y_k^eVsSM}G*Mmj_6^X3u&+~sb0-*zUIQ|O~9WoW@L<%gj$}S zMtV{?PHxN-TKCQ|x5uF_Zp^(kZd4|OXf!htUQYKGew%2Qs&_J2nWCZlI#TL;TE*tA z#Dk_J;<4;nihZ~D_@?4x@vU&nVwW<^F8L90Iw?-uBl#-bdwKkG4J2LH6P zE>`0~45abmmkrw2Ijns792-zAv z--3yz%++-Z_7mfTYKx%V!hnQl9@_L6+xy!V_+6ny>%@U$D;ax;GLgTBUd^SY0wJ=N zjI{iU8l?ym4Ofbi>YUB9)W9hKne?lKArgjc0+Brw0gc%H5uK>R4Xc8nj>i3c^Yksk zXtN;iF8fX}z#&7)klw@wd}|EXfi9>^EkZCb^uYuIh_P5Ge9j)*UIWJ2essaZ;YrCB znTU(K7{ObVgIzx3HH=O-5Cf}b0`wRH{;AqnfK%R!cNmR2UTVx^8~Nx2lm^>RKUVhq;TtqqZ_H@F;y8vc+l z+A5H8UxgUSEhdxLXJHx&}ZqJKV9p;ieH3#9-I? z8MGBHn5Csjj!jEcm2e48_3mO%)RYsQQ-BtA@r4pa6oczg6y`6TIa0w=02`0|ES2Cj zZ{N;wdLG}yF#K1GwpoHcGppW|d?Bz+#GcA;RrMfHFUjORMfv)cPbA%}h>@iWZd4O} zzaIiP;IoGK@3cdJsXfOiehTDtDe^KZVXuCT0=4?W8+8avRtRyu|6K#baQ!xvOsrqx zs+kXQiKhsm<0fC^WX^zxx!Z-!a-QJk-w$fLq0i}} z`Co?8X^8kMlxvR`ejm(@YP(-5&vLDx>CpvQ)a^AMO*H`NKq#uj-Lz6U$p6mIy#y>u zmTG`~f>dO|c8xgirM!gO6@}gn_{W>a_e!x;s?tIavx9YXO z=dA79feJg}A&clTS($y*?xW9YV+K8J?KyABoj@Upa)42}#X9kRPTk69I9&6$(VFM( zSXmko{p=9(Ed&IwD-+ zy2nt%D|6pzeH25yYt!hTamBNj1TO&@PVG!r@Wx&y@4?(2*1mG}F;cUH6E>!*?P2qt zXM=F+M!%R|KiHIoSK!VA$H*t%3R4OjMYLp!)McdV4Yb{Hb~<8c$pE+a{&f|`4LxK` zRD6D?<$BUgfsQA0kaSViw_r4>1-A5|($b&XedMI^|st1i> ze`WCpXN98f2q^5de(CJp*}wvG9azs?sHnf-&3~{&y`>XAC`sFwzYwTUMcwoon$x39 zFT?m_QNq-Wujy6>dW=)9tDCxMFGhv7bxRrga6B4SWpjtsw+vpnP(kQ?DCabq`N0Sw z;kzHDWO`l&X9um7t_aBx4F7E7WjmNPUgc}=Yr8frATw{@>b{mb>Z#?wJxKCL~z1vsm?GQ~Qk;<&}sd=MVDR%|fKEj4{5M zvSvRk2iJS7gJ5U7(}Tt?f6}?*pjZ%1e*vwx?I8dF diff --git a/res/drawable-hdpi/com_android_deskclock.png b/res/drawable-hdpi/com_android_deskclock.png index 9fbacbb911d31673790bc27f3933b9cc8feb20dc..60f8ebac5f9d6804474d4f54a665e9e27564e597 100644 GIT binary patch delta 4956 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 ZDW3A^KLknB0&P$IlRm~oryA`P`9G?43XlK* diff --git a/res/drawable-hdpi/com_android_dialer.png b/res/drawable-hdpi/com_android_dialer.png index 335090ac8025b43df1b6368cfa771610030abf54..bb1d965ab1812244e8cf9e90bb42853741a5844d 100644 GIT binary patch delta 4698 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 diff --git a/res/drawable-hdpi/com_android_gallery3d_app.png b/res/drawable-hdpi/com_android_gallery3d_app.png index 1e7e536cf47d2472d98755a651b09f296296b70c..d75a7991fe31ca6e75eabaf52cfb796add00f731 100644 GIT binary patch delta 4527 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 Mb9-=;sek(a0R_o()Bpeg delta 2846 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 diff --git a/res/drawable-hdpi/com_android_mms_ui.png b/res/drawable-hdpi/com_android_mms_ui.png index 3b8ddc50ba0965fbc6801321ab61fcd7c79c727a..5893b1d300fe1be19a79d25383a91cf11d6923fd 100644 GIT binary patch delta 4056 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 diff --git a/res/drawable-hdpi/com_android_music.png b/res/drawable-hdpi/com_android_music.png index 5108f6961b08006ea3d2a04096e0b8955e4fb893..792912b1e7e54f97d586aae22cbaf911942f7584 100644 GIT binary patch delta 5385 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 delta 3873 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 kG9$Bi-O)2iO5#R{#J2 diff --git a/res/drawable-hdpi/com_android_settings.png b/res/drawable-hdpi/com_android_settings.png index e3ef259426f0db03408a836c75c2abc6d0f43882..7e837141285353cc6baf114f48145a6de86c480d 100644 GIT binary patch delta 6709 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 D6PgFy delta 5545 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 diff --git a/res/drawable-hdpi/com_android_soundrecorder.png b/res/drawable-hdpi/com_android_soundrecorder.png index 34a2ddd71b619b458fb1751edd81a77d87e07ea0..bedf4ab1145aceba6317da6a3a2bf45a691fceb0 100644 GIT binary patch delta 5071 zcmZ{nRaDdsw8fPW5JW-&6^VhNB&9nXVrc1<9zePTB>sZ5^(Hf^u^F+%kMZ z0#a+h|bMj z!wM#1`QHXY|Ha00V#@%K_T~Hs56C*95NR#1g*{_Cd&613d-R}EL>`Mq4h<5lI&;O=vRCq!$ zpG-%AsDrbExI>_WE<1iKAXGOe2xmpaEYcb7>6J(ki?~~w(4?r&ovQM-6EmF=3f}BXi_A5!vT4fc=pLq{)-Dz(i4SXVL8`79>B+O3z`w2-tF!&aWBcH@* z0HH_cE$}U7YB04;jFl#%%B6iUcK)`&Xtn9OL+GCsu%Vy zy;=SEd==6GnVOJ5^i(onH>vuT%ksr;`28|l7oT9eQ(;s&HD-IFWt)x=OB~d0$slKj zZ<}Iyx@6YpBCyH-UfC=6c6ea#=wmk~1;_w$UrE`2lC%A6Vu~q06K+_lnkiCn7Ybm& z;bL$qBj;C>P2>N#zSY0T+0}CsW^zO?z9U_kg;<=(AMmPnLmNV76Q0Q|PHv;q16Ejd z`pxC#vb3p{=`iNIUO!jo`X&_9!n&SN!j^Yr_DX5H;X3Kv&O%O4I&reE8fYD2#vi2mZU2G@+{ zwVsXpz3wGEsQqW*M@|a+%#AuCS{SSla%eSga#}-pZhF$)uh@QegW)`d1npPCMZCHG zjL4qCf z&JM0KQPn@r>8sV@#XQCMGtlQ$ovcCA7H_Rpy?Fkv(HKTOK8Rqbv7D*hV%q`_yc))(amiATORAk6s+TdZJU14Jh zo!Xs3SwK1$Ta0|TN{7LGJ30f8)e8o^l059@i_-(Q9b+f8>~#*4`zFs{G55^iFfXfslC@fjAgg3EfGQ)O)o;sM5?HrI#=}V#olVS%8#4N zNcxIGHp%(l2s#}9!Pisn7rX*;8-L+2W^NE$lM25jMsv?{4nnlm!R1)zpYO|Y?eF&T z)_L7*U(YV@8|mznsVtKf$(*K9;toufN-N&Cv)YuyS!*c6s~9Ske~&N*GO$81NY2am zeWHon@^STAyVtVsf+|5RQE_nbkx%?xQ5~Bvj z{rO*}^5hi>0-MYSio+DLw(lVmLZ1cle-ms{)~YoC_7e_<+l~c~J&=S%jSU|-9m2=K zr(`#~6qFN;<&U^MQzk+|wiB(mM0*3%ktE%qnx@<^lH`#oo5Y>F`R|Sxzcj{>Nj^1D zjBAB!wtn9}pC>^^20Kv2BUs)dVD$QQj$d-ARi9{&MG-;vA$PsoCgTxRYmQbFba*%V z!ZVsDwHD^T!5e$?dQyz3l2Cf5HvGa@Nx)LYPyCub?820ZFLN5vSa6AL7jK>GjdUx^ zV-MhAT{rq8f>aS!5=TqN55f%k>%7JUQU~du{h?6vK01RZ^8t_0)Ha31ASN>Y!reS# zrr|g!>Uv2-yAp22AvF79`CFdBVWrXJ-B?_~OVdR+76TEAVfF|{mIJ$K5wJ@Frep$# z*@G$)W;3HffI59MJGJm$qopoVngi3U7>gBrX!OVDSoLeV+>gh{dn!4o9CNJoFZp_} zS?3<{dVGUTdH`*`;Vn`2uUj&1Y2>6l&$5BcnRzaH>cTTN|?q|_|y<@Su$ty zLP~8W{*1Tgz?f7Sl}jh|2<%TIazn1fM0tx+l zBW6@GXaC-n7_(4N;IT_sNu6x+)JT4uP=v0rNfYdr`rOFw-Q933NsuGkCn{IM`L5;W zq+ZtT9)8DtU{_4%Yr=W*p3?vNmfN*aR#V)q7x+?N9p*O*E3urH%_;#wDGAa<)^O|P z($Yk8B_I+!C4FZ@FcmII7%YPClLO6)N40Yk+RAxV=;I@{2%nQf2Dzj?RFO-rA~i6& zolGp&Drr@`q!)jw{k%e}_9>XvWN<49&}Vn|b8itTH0|P$NfcRUE2~!0ejv-H5yUzH zSSk$dYJhv3DN7gyb1!DUYX#hf8n@<5v6@!bR}s7pk-UiG;#qI!_?~HsBmJV>5L&{I zXjPwL+@B;m5%Kuc796CM!S#nnJ};`=L!gG6gE(x_B=*{-v4$`icleYLMru{-&^c&< zJ295lxuGa7ptrc&7E%lS!!t z(UURJ$FN}r2mPe8sn^s+Gp8;~Eo*UnO`W>22gymEO0!pUPbs6ODozr#{i}lD|&MAFVd{a?o0{Bg#(VGG5s0ZtPtLe9~<# z;>Zq(vp$m#P@u>@v)!4cZlQ=>UTgw$s*I+hrh(@E^S6FCrwueWX8yNICJ z7sbdy8bd~jK`!L8qRuC-Qg6|~*H@cn8>Z&XnxGNdK8t-*9bqoy`^JoAg^tqg`B+vp zUBTzU^IW&S^*bMy)ytK$iY!#OJeivtE*XrehZPBu;_zST7sfPbC9E| z1w_iqm-%7tUW_W<;E!^sk_r1`qajK*dLek+qs^HjZdcY5gTHaiupw>We&A{&-Ym_# z`st2k5$ABzr}5BSNxe|z9`F^aJq{-j{bF*f_5K5`1|&;+w|-wi(Fav{&TDsNqsfn( zE*ZUN5UW%2_TF_L(zYXEjBQJF&{`6y{v(rcr3|3$*|;oVxJF}lt&y!Q9Q)-N?oL_Ee~JDERzPB9&%8{Lk! zHS%T-wVa}k_(ikd^Yffa#!hn@V-Glz?F7A=oW<4%%*+cry0y5aVo=$8t=LZ47Y9Wy z@sz9`xZ`cYnl;w6OB41ag`%Z&M^0PRXiPNGRx-Y$@fdUGMt5N6UZW&q!8N6TNQ)iW z<7_wQPREIhV?QPrL!1nE5n%F>^dpZebFpQk1Jbe~z>VUA#O1^GZcXuqw=XrwdTVug z6}|pkxj;gONH^y-{itZ4Dje?6_L-h+MrtMau=r+pY!HjmE~m=aurMT7J+qzPnGMbN z*%#)E9#%8(%>rPO1>KIk0S9+{5@$`imHuu^?)QHUAEt>+|7h;L!>$B}|L?64_frP` zwI^f78(E`K7@kk;Ahg?Vyywx}w|Wvr6Px3J6obyLE#nN(r@i#s;d?1zUU5SR3>XKr>_g)6PE$-`Y6_B4%ZsJyM4VYkp zhRB%D_N0omRE|d5$TW^HeTs<^q?{HFo{T;YM&E1O zI403zfe*&o!+N_~LUB?ql??GMTs?7NjXWOH%(kkaKkebO^4tylAsn=+@5VH~5}jKP z6zV?4eUixfTuA<9qC!JSTuGyoUWYaDXx5u7KsQlVlwOZDhT+Kq*UqIf!=m)r6bLwb z_coXktFDO}u~iaV_rxhC0sE=(k2X}B6a?Km9bS222FZQR&wSi^oGdz5#rmeqss6f! ziR9A0a~N6Z{RxNH`wzm#d-@MTQ#uu__cPQ2eHnXWOliBAvV!xOmHG6_%}TT1H&>?- zh(qjbNW@+2~pSb?Y9a=VY1yYJ)$&xjp2!$?#^^GL9y1RLelalueZIAbKCfTeb zD$9f0zHp?*d+n_e1o=c*IaD)5$tS7K#h2QqSj%S#(XEd7?4>yPRL$LN^Ys8f8eR6` znIu`t&-aV%lg>WdKCm2)j_9$qkYm?7irjknef zAT5Y2q2P^J4@acfkATal%{6iN>)f<9oNAel>pW3q40tv0ftccXVC<$DrO})6=s{g} zoAKk{S`KcE-b%^i`N*o1`Qemu=s5UI?bN%B^aSCvr!vB>c#OLP8kIFLV|IOGj5<%M zeNiI6hg4LQmK~xo?XH*Pb&DTD5!3ZuS~;zoBEAOG6p}J-$?M}~0wP-)lS6#Vr0F>;)OdC-LXnC)0Ec`s&RZB5UN6@8&R(?h1i+vH00MDKVy z!Ad?UGTtOy&0toahpEk|AG5GZeZ~96g>884*cRvj$c^@0>`)cTznx_<>PjaK&8n9$ zpQRMeQlfJow$+buz3Ybrzk0-P9P;Z*!_w%frK9|JH82%7PgY9w?4@h+T{;F#M#&GR zP=y&P?so|12OJ9*c06V(eQk8jkcOtI?z4k0?(ie3l_ruqUt>cZtsZLHtZ+oCRujL%rp5wv|kR9iPU4 zIxNFM3_ce*v9|A;Kw!ae6eIcbi_VutrNDLj?XtSh1Ay`i`1}?A*C6%arBMFMFj5#k i?drp!2@LS?U(FSJeq!1OkGIJSskv$`$ zyQ{MbkzIXzJbsVgpS}NlKi<#B^Zm!`@fuTT6M11wkASLZC>yG)8LMkR)RdK>hMETI zYDQYd>S|hG70qjEhLYmQ;4n)|ZKF`ns9^7qNK+$S$-f(rm%o?x|FP=ef3XGC^x*#& z82#%=QamCO?(L)P^-qBs^j~ZN2mnF9bT;FsqhqZ%H8QYAE^OV34MTWe&^ug?r_PLA z@z2K}@Gw2~u8S;k;i((oe0Xh$bh@tD1gT0a%aNko&q^kHGBA5nB^ZwZUS_Vf_B8@F zw6j+xK7jP*4$HRn#LY3D1T(6n}$9t+bfIc z*F;VBRm-5cdUJg7HJ@%x!)fR{Dl3Ia~5QCHX1FgPJQWFVHHScQ7 z8xGidgJ*=Qq{W4DHOv^%euM{3wpa=WCT~b44K2NLJjO)V+vs zvfTKmL*Yh}^(JbD@i zBlM;WcHUuR5JT}7=JOtO#YskQJ>|BdO8FgOU$2aAXi712WxW-2`}B$ZWerR-=Me0sYGZ50zWRc`Qu?XY~-*w^=4TTk5l!)B+S?dYp zWADb#5$Mv^BnJP~uudHQ);)guq+^)FRp^;OiDpG1Gv|Y@!;l}k6NZ+Q1SOq4uD62G z>piC+51F}4jh%OU@3S-9W4`f!Ll8!7Nw0JG7roqx54bfS8G($t&5c)x2iDpD1EMUVyab3`q2U(VUs|h85#hf$xB~;3Z^thc?LdaXulDbhY5@YEjIzIZ*9YwA z&+$Lw+UJwecYVcD*dT{Rmwx0qIsjD8&R~?enf}boB`+^0t;}`6bQlL@Plp7+%FR>S zm)OTuMhCM5kG}pI|3js$x^^>}h4fswAExK$-~i8d>hX|T6N{reX{Q;i4=NE~!-WRl z#8t-a>AJgT8sH~l4OgQIkk!#r&&{^5k))2eM+nxWvezM>rGlvA06>=%1n9-?OirJX* zciF>hEk2puY?no+K#c`9=m$2<{}Y53k97gDDMG%kcN6e2I8Nc0^KcIi)tIJ}xE%7a zfRX?JKH`z9`otVkopgOdukV9-l?DHUN=D383BMbKD=*JWDs9tmH)Ipg12OyKz{HJ> z>XiPLOQF2-mrhExY{C}>!P(7GTSs|dH=TPfQ8v5X>s{#F?^QNIO=^Er`FN*9a-oP} zHRn2^Gg?%ZV1^CPt_!Q`H`g5-Fc&|XB8sO;xLtkD?V-G6md=umA9t306Ef8V7tWBm z@hZV_%UkH}$^vCll7^Wt16eEm#tAn0DIQ-*Cn>Uue})wnmR>5n!kOQn!UlxUcc{> z@+xR3(@3_KVq=~E)d|{jD-XUTT|0u)bD>hsDE@xE7v<$H_6dvnPDtJrscE(IdRPuM zf5D#N9Va57#8;z)V3|?sxs3mU`tLT&^25g7wM{fYvCpb|yFk!z$5$`C3V>!@Sr|5O zZMpnC{_i)BtdATM=%?A7GJ=zhT^EaH?Tj6IPvi-P4-$70cOY$~&KaLnApmLodP7?YZg_mxxTP)lni36 zM<2DEDRA+BfMv4z;HqUB{T18@5aW{BV*lIhk8O%tG__|aVe<-1yk%%8~`N2Rt( zh4VE^^HAp&{YxnvP^YqNiq37w;uf-i^z3hi!lXviBMw#Ht-6M05hF8r6Z;Fm62+=0 z70W%kgj*^#%~>Jr$`)Y1=Uz^a)*c3+p)P_Sq(C@qg~a6mLV-+^3xuL&-4I6J?RVO; zRdpHUS>!{G7OcGs2w?ENc69Eu0uVFc`2wi`?E3~b>AHc(6t4O1QlWyGhkAHSWTk7- zf=O3R5Zii~NPPh^eO_Slb46xQL3zm3$Uz<}+A0HPJ{J2CIGMN~GwenS_C@1NFdEpV z=-uBbXBpol8515Ns}>Nu=keK_2Hs1<^<mEVFxpU2#8sBVb9QZRy#- zf%C?(1BViNBlz%JX{NY-&INQ)M}xju2(@D@>L{Th%&PoRuLH@rb}(9A`zh~H>6dsg zmL{zaJ$1ypP8bBgxKx(%*RS(#igcZR5*JDZw7mtv zqAm98>Vq&yp7x8#rRUt0rxOVoXA0qyTt9IeK!Fqel!v6?Sv_|uaQ|3iGmmSYZ5NRN zTQgYB?qWD*TGaN{4E!P>C~@ffBYjAPvG~`0A&|1H#X>O!D5tUlH4PU$>&3C-s54 b|FD7SlHyCJ0{A^V>Hdx>)XJzC;-36JDJ7pX diff --git a/res/drawable-hdpi/com_android_stk_stkmain.png b/res/drawable-hdpi/com_android_stk_stkmain.png index 3fe7e67411406657854095d88086cd20e9bcaa35..d1e5d39fd2e47c4c62cec6fcd64c86063bc87e0e 100644 GIT binary patch delta 3401 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 delta 2897 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 Np{lF$TFE-(e*oxg%Gv+` literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/com_mediatek_filemanager.png b/res/drawable-hdpi/com_mediatek_filemanager.png index 02a37cd117dd15739e3a42287d00ea9de7fbf504..0634bc6a7b9d65da1b6208b062f70cee48d2cb5d 100644 GIT binary patch delta 211 zcmcaBeph^h8&iy#rGbHotBaA7fuXUXp{ui#p^>qxvx$+JsiT{ji>sNELPc(YudkI$ zesXDUYF>$_i>(q+L@y;X#R{s|7?5|o-|m4e#>LtJ_%>oGgA OJns9ivblsglLG+S=Q$_i>(q+L@y;X#R{s|8JFJ4i5|o-|m4e#>M_hU*>oGgA OOciqazPW@slLG*E*gC-g diff --git a/res/drawable-hdpi/com_mediatek_fmradio.png b/res/drawable-hdpi/com_mediatek_fmradio.png index fca901110c887b4a19e610c98ee5dc9cb4f8ae03..075277c18db6c9684c87a8536bc0cd9c6fe12eb4 100644 GIT binary patch delta 6496 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 Ef67~9+5i9m delta 6101 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 Z9@9V5Q6FqLu6*pzpiHa~HE@sn{{#0totyvw delta 3451 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 diff --git a/res/mipmap-mdpi/ic_launcher_home.png b/res/mipmap-mdpi/ic_launcher_home.png index cc24a001acff1e181147e9f50d8b0b708285ca8c..4d6240b558aaefb32c43e2f876f906a808d793a0 100644 GIT binary patch delta 3449 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 Z9@9V5Q6FqLu6*pzpiHa~HE@sn{{#0totyvw delta 3451 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 diff --git a/res/mipmap-xhdpi/ic_launcher_home.png b/res/mipmap-xhdpi/ic_launcher_home.png index cc24a001acff1e181147e9f50d8b0b708285ca8c..4d6240b558aaefb32c43e2f876f906a808d793a0 100644 GIT binary patch delta 3449 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 Z9@9V5Q6FqLu6*pzpiHa~HE@sn{{#0totyvw delta 3451 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 diff --git a/res/mipmap-xxhdpi/ic_launcher_home.png b/res/mipmap-xxhdpi/ic_launcher_home.png index cc24a001acff1e181147e9f50d8b0b708285ca8c..4d6240b558aaefb32c43e2f876f906a808d793a0 100644 GIT binary patch delta 3449 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 Z9@9V5Q6FqLu6*pzpiHa~HE@sn{{#0totyvw delta 3451 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 diff --git a/src/com/aoleyun/os/Launcher.java b/src/com/aoleyun/os/Launcher.java index 170d838..5933329 100644 --- a/src/com/aoleyun/os/Launcher.java +++ b/src/com/aoleyun/os/Launcher.java @@ -24,6 +24,7 @@ import android.animation.ValueAnimator; import android.annotation.TargetApi; import android.app.ActivityOptions; import android.app.WallpaperManager; +import android.app.role.RoleManager; import android.appwidget.AppWidgetHostView; import android.appwidget.AppWidgetManager; import android.content.ActivityNotFoundException; @@ -49,6 +50,7 @@ import android.os.Handler; import android.os.Parcelable; import android.os.Process; import android.os.StrictMode; +import android.os.UserHandle; import android.provider.Settings; import android.text.TextUtils; import android.text.method.TextKeyListener; @@ -166,7 +168,9 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Random; +import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; import java.util.function.Predicate; import io.reactivex.Observable; @@ -421,7 +425,8 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, } if (!isDefaultHome()) { - setDefaultL(); +// setDefaultL(); + setRoleHolderAsUser(this, BuildConfig.APPLICATION_ID); } SharedPreferences sharedPref = getPreferences(MODE_PRIVATE); int i = sharedPref.getInt("SetWallPaper", 0); @@ -572,6 +577,39 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, } } +// private void setDefault() { +// String mRoleName ="android.app.role.HOME"; +// final Intent intent = new Intent(Intent.ACTION_MANAGE_DEFAULT_APP) +// .putExtra(Intent.EXTRA_ROLE_NAME, mRoleName); +// startActivity(intent); +// } + + public void setRoleHolderAsUser(Context context, String packageName) { + String roleName = "android.app.role.HOME"; + boolean add = true; + int flags = 0; + UserHandle user = Process.myUserHandle(); + + Log.i("settingssssssstemf", (add ? "Adding" : "Removing") + " package as role holder, role: " + + roleName + ", package: " + packageName); + + RoleManager roleManager = context.getSystemService(RoleManager.class); + Executor executor = context.getMainExecutor(); + Consumer callback = successful -> { + if (successful) { + Log.d("settingssssssstemf", "Package " + (add ? "added" : "removed") + + " as role holder, role: " + roleName + ", package: " + packageName); + } else { + Log.d("settingssssssstemf", "Failed to " + (add ? "add" : "remove") + + " package as role holder, role: " + roleName + ", package: " + + packageName); + } + }; + + roleManager.addRoleHolderAsUser(roleName, packageName, flags, user, executor, callback); + Log.i("settingssssssstemf", "addRoleHolderAsUser done"); + } + private TimeChangedReceiver mTimeChangedReceiver; //监听时间和日期变化 diff --git a/src/com/aoleyun/os/base/BaseApplication.java b/src/com/aoleyun/os/base/BaseApplication.java index 4572031..4539d8e 100644 --- a/src/com/aoleyun/os/base/BaseApplication.java +++ b/src/com/aoleyun/os/base/BaseApplication.java @@ -5,10 +5,9 @@ import android.app.Application; import android.content.Context; import android.util.Log; -import com.aoleyun.os.BuildConfig; +import com.aoleyun.os.manager.ConnectManager; import com.aoleyun.os.uiuiutils.ToastUtil; import com.aoleyun.os.uiuiutils.Utils; -import com.aoleyun.os.network.HTTPInterface; import com.aoleyun.os.network.NetworkManager; import com.aoleyun.os.network.URLPath; import com.aoleyun.os.uiuiutils.JGYUtils; @@ -46,7 +45,7 @@ public class BaseApplication extends Application { return app; } - public static Context getContext(){ + public static Context getContext() { return context; } @@ -62,30 +61,37 @@ public class BaseApplication extends Application { Aria.init(this); NetworkManager.init(this); ToastUtil.init(this); + ConnectManager.init(this); - initJPush(); + initPush(); } - private void initJPush() { + private void initPush() { // JPushInterface.setDebugMode(BuildConfig.DEBUG); // 设置开启日志,发布时请关闭日志 // JPushInterface.init(this); - XGPushConfig.enableDebug(this,true); + XGPushConfig.enableDebug(this, true); XGPushManager.registerPush(this, new XGIOperateCallback() { @Override public void onSuccess(Object data, int flag) { //token在设备卸载重装的时候有可能会变 - Log.d("TPush", "注册成功,设备token为:" + data); + Log.e("TPush", "注册成功,设备token为:" + data); } @Override public void onFail(Object data, int errCode, String msg) { - Log.d("TPush", "注册失败,错误码:" + errCode + ",错误信息:" + msg); + Log.e("TPush", "注册失败,错误码:" + errCode + ",错误信息:" + msg); } }); - initAliasObservable(); - initTagObservable(); - setJpushAlias(); - setJpushTags(); + NetworkManager.getInstance().setPushTag(true, new NetworkManager.onCompleteCallback() { + @Override + public void onComplete() { + + } + }); +// initAliasObservable(); +// initTagObservable(); +// setJpushAlias(); +// setJpushTags(); } private void initAliasObservable() { diff --git a/src/com/aoleyun/os/disklrucache/CacheHelper.java b/src/com/aoleyun/os/disklrucache/CacheHelper.java new file mode 100644 index 0000000..2800dae --- /dev/null +++ b/src/com/aoleyun/os/disklrucache/CacheHelper.java @@ -0,0 +1,461 @@ +package com.aoleyun.os.disklrucache; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.os.Environment; +import android.util.Log; + +import com.jakewharton.disklrucache.DiskLruCache; +import com.tencent.mmkv.MMKV; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.BufferedWriter; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Serializable; + +/** + * 磁盘缓存帮助类 + */ +public class CacheHelper { + private static final String TAG = "DiskLruCacheHelper"; + + private MMKV mMMKV = MMKV.defaultMMKV(); + + private static final String DIR_NAME = "diskCache"; + private static final int MAX_COUNT = 5 * 1024 * 1024; + private static final int DEFAULT_APP_VERSION = 1; + + private DiskLruCache mDiskLruCache; + + public CacheHelper(Context context) { + mDiskLruCache = generateCache(context, DIR_NAME, MAX_COUNT); + } + + public CacheHelper(Context context, String dirName) { + mDiskLruCache = generateCache(context, dirName, MAX_COUNT); + } + + public CacheHelper(Context context, String dirName, int maxCount) { + mDiskLruCache = generateCache(context, dirName, maxCount); + } + + //custom cache dir + public CacheHelper(File dir) { + mDiskLruCache = generateCache(null, dir, MAX_COUNT); + } + + public CacheHelper(Context context, File dir) { + mDiskLruCache = generateCache(context, dir, MAX_COUNT); + } + + public CacheHelper(Context context, File dir, int maxCount) { + mDiskLruCache = generateCache(context, dir, maxCount); + } + + private DiskLruCache generateCache(Context context, File dir, int maxCount) { + if (!dir.exists() || !dir.isDirectory()) { + throw new IllegalArgumentException( + dir + " is not a directory or does not exists. "); + } + + int appVersion = context == null ? DEFAULT_APP_VERSION : Utils.getAppVersion(context); + + DiskLruCache diskLruCache = null; + try { + diskLruCache = DiskLruCache.open( + dir, + appVersion, + DEFAULT_APP_VERSION, + maxCount); + } catch (IOException e) { + e.printStackTrace(); + } + return diskLruCache; + } + + private DiskLruCache generateCache(Context context, String dirName, int maxCount) { + DiskLruCache diskLruCache = null; + try { + diskLruCache = DiskLruCache.open( + getDiskCacheDir(context, dirName), + Utils.getAppVersion(context), + DEFAULT_APP_VERSION, + maxCount); + } catch (IOException e) { + e.printStackTrace(); + } + return diskLruCache; + } + + // ======================================= + // ============== String 数据 读写 ============= + // ======================================= + + public void put(String key, String value) { + Log.e(TAG, "put: " + key); + mMMKV.encode(key, System.currentTimeMillis()); + + DiskLruCache.Editor edit = null; + BufferedWriter bw = null; + try { + edit = editor(key); + if (edit == null) { + return; + } + OutputStream os = edit.newOutputStream(0); + bw = new BufferedWriter(new OutputStreamWriter(os)); + bw.write(value); + edit.commit();//write CLEAN + } catch (IOException e) { + e.printStackTrace(); + try { + //s + edit.abort();//write REMOVE + } catch (IOException e1) { + e1.printStackTrace(); + } + } finally { + try { + if (bw != null) { + bw.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public String getAsString(String key) { + Log.e(TAG, "getAsString: " + key); + InputStream inputStream = null; + try { + //write READ + inputStream = get(key); + if (inputStream == null) { + return null; + } + StringBuilder sb = new StringBuilder(); + int len = 0; + byte[] buf = new byte[128]; + while ((len = inputStream.read(buf)) != -1) { + sb.append(new String(buf, 0, len)); + } + return sb.toString(); + + + } catch (IOException e) { + e.printStackTrace(); + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + } + return null; + } + + + public void put(String key, JSONObject jsonObject) { + put(key, jsonObject.toString()); + } + + public JSONObject getAsJson(String key) { + String val = getAsString(key); + try { + if (val != null) { + return new JSONObject(val); + } + } catch (JSONException e) { + e.printStackTrace(); + } + return null; + } + + // ======================================= + // ============ JSONArray 数据 读写 ============= + // ======================================= + + public void put(String key, JSONArray jsonArray) { + put(key, jsonArray.toString()); + } + + public JSONArray getAsJSONArray(String key) { + String JSONString = getAsString(key); + try { + JSONArray obj = new JSONArray(JSONString); + return obj; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + // ======================================= + // ============== byte 数据 读写 ============= + // ======================================= + + /** + * 保存 byte数据 到 缓存中 + * + * @param key 保存的key + * @param value 保存的数据 + */ + public void put(String key, byte[] value) { + OutputStream out = null; + DiskLruCache.Editor editor = null; + try { + editor = editor(key); + if (editor == null) { + return; + } + out = editor.newOutputStream(0); + out.write(value); + out.flush(); + editor.commit();//write CLEAN + } catch (Exception e) { + e.printStackTrace(); + try { + editor.abort();//write REMOVE + } catch (IOException e1) { + e1.printStackTrace(); + } + + } finally { + if (out != null) { + try { + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + + public byte[] getAsBytes(String key) { + byte[] res = null; + InputStream is = get(key); + if (is == null) { + return null; + } + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + byte[] buf = new byte[256]; + int len = 0; + while ((len = is.read(buf)) != -1) { + baos.write(buf, 0, len); + } + res = baos.toByteArray(); + } catch (IOException e) { + e.printStackTrace(); + } + return res; + } + + + // ======================================= + // ============== 序列化 数据 读写 ============= + // ======================================= + public void put(String key, Serializable value) { + DiskLruCache.Editor editor = editor(key); + ObjectOutputStream oos = null; + if (editor == null) { + return; + } + try { + OutputStream os = editor.newOutputStream(0); + oos = new ObjectOutputStream(os); + oos.writeObject(value); + oos.flush(); + editor.commit(); + } catch (IOException e) { + e.printStackTrace(); + try { + editor.abort(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } finally { + try { + if (oos != null) { + oos.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public T getAsSerializable(String key) { + T t = null; + InputStream is = get(key); + ObjectInputStream ois = null; + if (is == null) { + return null; + } + try { + ois = new ObjectInputStream(is); + t = (T) ois.readObject(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (ois != null) { + ois.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + return t; + } + + // ======================================= + // ============== bitmap 数据 读写 ============= + // ======================================= + public void put(String key, Bitmap bitmap) { + put(key, Utils.bitmap2Bytes(bitmap)); + } + + public Bitmap getAsBitmap(String key) { + byte[] bytes = getAsBytes(key); + if (bytes == null) { + return null; + } + return Utils.bytes2Bitmap(bytes); + } + + // ======================================= + // ============= drawable 数据 读写 ============= + // ======================================= + public void put(String key, Drawable value) { + put(key, Utils.drawable2Bitmap(value)); + } + + public Drawable getAsDrawable(String key) { + byte[] bytes = getAsBytes(key); + if (bytes == null) { + return null; + } + return Utils.bitmap2Drawable(Utils.bytes2Bitmap(bytes)); + } + + // ======================================= + // ============= other methods ============= + // ======================================= + public boolean remove(String key) { + try { + key = Utils.hashKeyForDisk(key); + return mDiskLruCache.remove(key); + } catch (IOException e) { + e.printStackTrace(); + } + return false; + } + + public void close() throws IOException { + mDiskLruCache.close(); + } + + public void delete() throws IOException { + mDiskLruCache.delete(); + } + + public void flush() throws IOException { + mDiskLruCache.flush(); + } + + public boolean isClosed() { + return mDiskLruCache.isClosed(); + } + + public long size() { + return mDiskLruCache.size(); + } + + public void setMaxSize(long maxSize) { + mDiskLruCache.setMaxSize(maxSize); + } + + public File getDirectory() { + return mDiskLruCache.getDirectory(); + } + + public long getMaxSize() { + return mDiskLruCache.getMaxSize(); + } + + + // ======================================= + // ===遇到文件比较大的,可以直接通过流读写 ===== + // ======================================= + //basic editor + public DiskLruCache.Editor editor(String key) { + try { + key = Utils.hashKeyForDisk(key); + //wirte DIRTY + DiskLruCache.Editor edit = mDiskLruCache.edit(key); + //edit maybe null :the entry is editing + if (edit == null) { + Log.w(TAG, "the entry spcified key:" + key + " is editing by other . "); + } + return edit; + } catch (IOException e) { + e.printStackTrace(); + } + + return null; + } + + + //basic get + public InputStream get(String key) { + try { + DiskLruCache.Snapshot snapshot = mDiskLruCache.get(Utils.hashKeyForDisk(key)); + if (snapshot == null) //not find entry , or entry.readable = false + { + Log.e(TAG, "not find entry , or entry.readable = false"); + return null; + } + //write READ + return snapshot.getInputStream(0); + + } catch (IOException e) { + e.printStackTrace(); + return null; + } + + } + + + // ======================================= + // ============== 序列化 数据 读写 ============= + // ======================================= + + private File getDiskCacheDir(Context context, String uniqueName) { + String cachePath; + if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) + || !Environment.isExternalStorageRemovable()) { + cachePath = context.getExternalCacheDir().getPath(); + } else { + cachePath = context.getCacheDir().getPath(); + } + return new File(cachePath + File.separator + uniqueName); + } + +} diff --git a/src/com/aoleyun/os/disklrucache/DiskLruCacheHelper.java b/src/com/aoleyun/os/disklrucache/DiskLruCacheHelper.java new file mode 100644 index 0000000..1dbfe10 --- /dev/null +++ b/src/com/aoleyun/os/disklrucache/DiskLruCacheHelper.java @@ -0,0 +1,427 @@ +package com.aoleyun.os.disklrucache; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.os.Environment; +import android.util.Log; + +import com.jakewharton.disklrucache.DiskLruCache; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.BufferedWriter; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Serializable; + +/** + * 磁盘缓存帮助类 + */ +public class DiskLruCacheHelper { + private static final String DIR_NAME = "diskCache"; + private static final int MAX_COUNT = 5 * 1024 * 1024; + private static final int DEFAULT_APP_VERSION = 1; + + private static final String TAG = "DiskLruCacheHelper"; + + private DiskLruCache mDiskLruCache; + + public DiskLruCacheHelper(Context context) throws IOException { + mDiskLruCache = generateCache(context, DIR_NAME, MAX_COUNT); + } + + public DiskLruCacheHelper(Context context, String dirName) throws IOException { + mDiskLruCache = generateCache(context, dirName, MAX_COUNT); + } + + public DiskLruCacheHelper(Context context, String dirName, int maxCount) throws IOException { + mDiskLruCache = generateCache(context, dirName, maxCount); + } + + //custom cache dir + public DiskLruCacheHelper(File dir) throws IOException { + mDiskLruCache = generateCache(null, dir, MAX_COUNT); + } + + public DiskLruCacheHelper(Context context, File dir) throws IOException { + mDiskLruCache = generateCache(context, dir, MAX_COUNT); + } + + public DiskLruCacheHelper(Context context, File dir, int maxCount) throws IOException { + mDiskLruCache = generateCache(context, dir, maxCount); + } + + private DiskLruCache generateCache(Context context, File dir, int maxCount) throws IOException { + if (!dir.exists() || !dir.isDirectory()) { + throw new IllegalArgumentException( + dir + " is not a directory or does not exists. "); + } + + int appVersion = context == null ? DEFAULT_APP_VERSION : Utils.getAppVersion(context); + + DiskLruCache diskLruCache = DiskLruCache.open( + dir, + appVersion, + DEFAULT_APP_VERSION, + maxCount); + + return diskLruCache; + } + + private DiskLruCache generateCache(Context context, String dirName, int maxCount) throws IOException { + DiskLruCache diskLruCache = DiskLruCache.open( + getDiskCacheDir(context, dirName), + Utils.getAppVersion(context), + DEFAULT_APP_VERSION, + maxCount); + return diskLruCache; + } + // ======================================= + // ============== String 数据 读写 ============= + // ======================================= + + public void put(String key, String value) { + DiskLruCache.Editor edit = null; + BufferedWriter bw = null; + try { + edit = editor(key); + if (edit == null) return; + OutputStream os = edit.newOutputStream(0); + bw = new BufferedWriter(new OutputStreamWriter(os)); + bw.write(value); + edit.commit();//write CLEAN + } catch (IOException e) { + e.printStackTrace(); + try { + //s + edit.abort();//write REMOVE + } catch (IOException e1) { + e1.printStackTrace(); + } + } finally { + try { + if (bw != null) + bw.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public String getAsString(String key) { + InputStream inputStream = null; + try { + //write READ + inputStream = get(key); + if (inputStream == null) return null; + StringBuilder sb = new StringBuilder(); + int len = 0; + byte[] buf = new byte[128]; + while ((len = inputStream.read(buf)) != -1) { + sb.append(new String(buf, 0, len)); + } + return sb.toString(); + + + } catch (IOException e) { + e.printStackTrace(); + if (inputStream != null) + try { + inputStream.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + return null; + } + + + public void put(String key, JSONObject jsonObject) { + put(key, jsonObject.toString()); + } + + public JSONObject getAsJson(String key) { + String val = getAsString(key); + try { + if (val != null) + return new JSONObject(val); + } catch (JSONException e) { + e.printStackTrace(); + } + return null; + } + + // ======================================= + // ============ JSONArray 数据 读写 ============= + // ======================================= + + public void put(String key, JSONArray jsonArray) { + put(key, jsonArray.toString()); + } + + public JSONArray getAsJSONArray(String key) { + String JSONString = getAsString(key); + try { + JSONArray obj = new JSONArray(JSONString); + return obj; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + // ======================================= + // ============== byte 数据 读写 ============= + // ======================================= + + /** + * 保存 byte数据 到 缓存中 + * + * @param key 保存的key + * @param value 保存的数据 + */ + public void put(String key, byte[] value) { + OutputStream out = null; + DiskLruCache.Editor editor = null; + try { + editor = editor(key); + if (editor == null) { + return; + } + out = editor.newOutputStream(0); + out.write(value); + out.flush(); + editor.commit();//write CLEAN + } catch (Exception e) { + e.printStackTrace(); + try { + editor.abort();//write REMOVE + } catch (IOException e1) { + e1.printStackTrace(); + } + + } finally { + if (out != null) { + try { + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + + public byte[] getAsBytes(String key) { + byte[] res = null; + InputStream is = get(key); + if (is == null) return null; + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + byte[] buf = new byte[256]; + int len = 0; + while ((len = is.read(buf)) != -1) { + baos.write(buf, 0, len); + } + res = baos.toByteArray(); + } catch (IOException e) { + e.printStackTrace(); + } + return res; + } + + + // ======================================= + // ============== 序列化 数据 读写 ============= + // ======================================= + public void put(String key, Serializable value) { + DiskLruCache.Editor editor = editor(key); + ObjectOutputStream oos = null; + if (editor == null) return; + try { + OutputStream os = editor.newOutputStream(0); + oos = new ObjectOutputStream(os); + oos.writeObject(value); + oos.flush(); + editor.commit(); + } catch (IOException e) { + e.printStackTrace(); + try { + editor.abort(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } finally { + try { + if (oos != null) + oos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public T getAsSerializable(String key) { + T t = null; + InputStream is = get(key); + ObjectInputStream ois = null; + if (is == null) return null; + try { + ois = new ObjectInputStream(is); + t = (T) ois.readObject(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (ois != null) + ois.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return t; + } + + // ======================================= + // ============== bitmap 数据 读写 ============= + // ======================================= + public void put(String key, Bitmap bitmap) { + put(key, Utils.bitmap2Bytes(bitmap)); + } + + public Bitmap getAsBitmap(String key) { + byte[] bytes = getAsBytes(key); + if (bytes == null) return null; + return Utils.bytes2Bitmap(bytes); + } + + // ======================================= + // ============= drawable 数据 读写 ============= + // ======================================= + public void put(String key, Drawable value) { + put(key, Utils.drawable2Bitmap(value)); + } + + public Drawable getAsDrawable(String key) { + byte[] bytes = getAsBytes(key); + if (bytes == null) { + return null; + } + return Utils.bitmap2Drawable(Utils.bytes2Bitmap(bytes)); + } + + // ======================================= + // ============= other methods ============= + // ======================================= + public boolean remove(String key) { + try { + key = Utils.hashKeyForDisk(key); + return mDiskLruCache.remove(key); + } catch (IOException e) { + e.printStackTrace(); + } + return false; + } + + public void close() throws IOException { + mDiskLruCache.close(); + } + + public void delete() throws IOException { + mDiskLruCache.delete(); + } + + public void flush() throws IOException { + mDiskLruCache.flush(); + } + + public boolean isClosed() { + return mDiskLruCache.isClosed(); + } + + public long size() { + return mDiskLruCache.size(); + } + + public void setMaxSize(long maxSize) { + mDiskLruCache.setMaxSize(maxSize); + } + + public File getDirectory() { + return mDiskLruCache.getDirectory(); + } + + public long getMaxSize() { + return mDiskLruCache.getMaxSize(); + } + + + // ======================================= + // ===遇到文件比较大的,可以直接通过流读写 ===== + // ======================================= + //basic editor + public DiskLruCache.Editor editor(String key) { + try { + key = Utils.hashKeyForDisk(key); + //wirte DIRTY + DiskLruCache.Editor edit = mDiskLruCache.edit(key); + //edit maybe null :the entry is editing + if (edit == null) { + Log.w(TAG, "the entry spcified key:" + key + " is editing by other . "); + } + return edit; + } catch (IOException e) { + e.printStackTrace(); + } + + return null; + } + + + //basic get + public InputStream get(String key) { + try { + DiskLruCache.Snapshot snapshot = mDiskLruCache.get(Utils.hashKeyForDisk(key)); + if (snapshot == null) //not find entry , or entry.readable = false + { + Log.e(TAG, "not find entry , or entry.readable = false"); + return null; + } + //write READ + return snapshot.getInputStream(0); + + } catch (IOException e) { + e.printStackTrace(); + return null; + } + + } + + + // ======================================= + // ============== 序列化 数据 读写 ============= + // ======================================= + + private File getDiskCacheDir(Context context, String uniqueName) { + String cachePath; + if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) + || !Environment.isExternalStorageRemovable()) { + cachePath = context.getExternalCacheDir().getPath(); + } else { + cachePath = context.getCacheDir().getPath(); + } + return new File(cachePath + File.separator + uniqueName); + } + +} diff --git a/src/com/aoleyun/os/disklrucache/Utils.java b/src/com/aoleyun/os/disklrucache/Utils.java new file mode 100644 index 0000000..114d864 --- /dev/null +++ b/src/com/aoleyun/os/disklrucache/Utils.java @@ -0,0 +1,101 @@ +package com.aoleyun.os.disklrucache; + +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.PixelFormat; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; + +import java.io.ByteArrayOutputStream; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class Utils { + public static int getAppVersion(Context context) { + try { + PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); + return info.versionCode; + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + return 1; + } + + + public static String hashKeyForDisk(String key) { + String cacheKey; + try { + final MessageDigest mDigest = MessageDigest.getInstance("MD5"); + mDigest.update(key.getBytes()); + cacheKey = bytesToHexString(mDigest.digest()); + } catch (NoSuchAlgorithmException e) { + cacheKey = String.valueOf(key.hashCode()); + } + return cacheKey; + } + + public static String bytesToHexString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < bytes.length; i++) { + String hex = Integer.toHexString(0xFF & bytes[i]); + if (hex.length() == 1) { + sb.append('0'); + } + sb.append(hex); + } + return sb.toString(); + } + + public static byte[] bitmap2Bytes(Bitmap bm) { + if (bm == null) { + return null; + } + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + bm.compress(Bitmap.CompressFormat.PNG, 100, baos); + return baos.toByteArray(); + } + + public static Bitmap bytes2Bitmap(byte[] bytes) { + return BitmapFactory.decodeByteArray(bytes, 0, bytes.length); + } + + + /** + * Drawable → Bitmap + */ + public static Bitmap drawable2Bitmap(Drawable drawable) { + if (drawable == null) { + return null; + } + // 取 drawable 的长宽 + int w = drawable.getIntrinsicWidth(); + int h = drawable.getIntrinsicHeight(); + // 取 drawable 的颜色格式 + Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565; + // 建立对应 bitmap + Bitmap bitmap = Bitmap.createBitmap(w, h, config); + // 建立对应 bitmap 的画布 + Canvas canvas = new Canvas(bitmap); + drawable.setBounds(0, 0, w, h); + // 把 drawable 内容画到画布中 + drawable.draw(canvas); + return bitmap; + } + + /* + * Bitmap → Drawable + */ + @SuppressWarnings("deprecation") + public static Drawable bitmap2Drawable(Bitmap bm) { + if (bm == null) { + return null; + } + BitmapDrawable bd = new BitmapDrawable(bm); + bd.setTargetDensity(bm.getDensity()); + return new BitmapDrawable(bm); + } +} \ No newline at end of file diff --git a/src/com/aoleyun/os/icons/IconCache.java b/src/com/aoleyun/os/icons/IconCache.java index d1e03b1..3ce3d9c 100644 --- a/src/com/aoleyun/os/icons/IconCache.java +++ b/src/com/aoleyun/os/icons/IconCache.java @@ -120,15 +120,16 @@ public class IconCache extends BaseIconCache { /** * Fetches high-res icon for the provided ItemInfo and updates the caller when done. + * * @return a request ID that can be used to cancel the request. */ public IconLoadRequest updateIconInBackground(final ItemInfoUpdateReceiver caller, - final ItemInfoWithIcon info) { + final ItemInfoWithIcon info) { Preconditions.assertUIThread(); if (mPendingIconRequestCount <= 0) { LauncherModel.setWorkerPriority(Process.THREAD_PRIORITY_FOREGROUND); } - mPendingIconRequestCount ++; + mPendingIconRequestCount++; IconLoadRequest request = new IconLoadRequest(mWorkerHandler, this::onIconRequestEnd) { @Override @@ -149,7 +150,7 @@ public class IconCache extends BaseIconCache { } private void onIconRequestEnd() { - mPendingIconRequestCount --; + mPendingIconRequestCount--; if (mPendingIconRequestCount <= 0) { LauncherModel.setWorkerPriority(Process.THREAD_PRIORITY_BACKGROUND); } @@ -171,7 +172,7 @@ public class IconCache extends BaseIconCache { * Fill in {@param info} with the icon and label for {@param activityInfo} */ public synchronized void getTitleAndIcon(ItemInfoWithIcon info, - LauncherActivityInfo activityInfo, boolean useLowResIcon) { + LauncherActivityInfo activityInfo, boolean useLowResIcon) { // If we already have activity info, no need to use package icon getTitleAndIcon(info, () -> activityInfo, false, useLowResIcon); } @@ -229,10 +230,13 @@ public class IconCache extends BaseIconCache { info.contentDescription = entry.contentDescription; info.applyFrom((entry.icon == null) ? getDefaultIcon(info.user) : entry); } + private List appClassNameList = new ArrayList() { { - this.add("com.android.appstore");//应用市场 - this.add("com.android.browser.BrowserActivity");//浏览器 + this.add("com.aoleyun.appstore.activity.SplashActivity");//应用市场 + this.add("com.aoleyun.browser.BrowserActivity");//浏览器 + this.add("com.aoleyun.sn.activity.SplashActivity");// + this.add("com.aoleyun.info.activity.main.MainActivity");// this.add("com.android.calculator2.Calculator");//计算器 this.add("com.android.calendar.AllInOneActivity");//日历 this.add("com.android.camera.CameraLauncher");//相机 @@ -260,6 +264,8 @@ public class IconCache extends BaseIconCache { private List appIconList = new ArrayList() {{ this.add("com_android_appstore"); this.add("com_android_browser"); + this.add("com_aoleyun_sn"); + this.add("com_aoleyun_info"); this.add("com_android_calculator2"); this.add("com_android_calendar"); this.add("com_android_camera"); @@ -294,7 +300,7 @@ public class IconCache extends BaseIconCache { if (null != info) { String name = info.getComponentName().getClassName(); -// Log.e("fht", "getDeskClockIcon:"+name); + Log.e("getFullResIcon", "getDeskClockIcon: " + name); if (appClassNameList.indexOf(info.getComponentName().getClassName()) == -1) { icon = BitmapUtils.getRoundedBitmap(mIconProvider.getIcon(info, mIconDpi, flattenDrawable), mContext); } else { diff --git a/src/com/aoleyun/os/manager/ConnectManager.java b/src/com/aoleyun/os/manager/ConnectManager.java new file mode 100644 index 0000000..2a33897 --- /dev/null +++ b/src/com/aoleyun/os/manager/ConnectManager.java @@ -0,0 +1,134 @@ +package com.aoleyun.os.manager; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; + +import com.aoleyun.os.uiuiutils.TimeUtils; +import com.tencent.mmkv.MMKV; + +public class ConnectManager { + private static final String TAG = ConnectManager.class.getSimpleName(); + + + public static final long ONE_MINUTES_TIME = 60 * 1000; + public static final long FIFTEEN_MINUTES_TIME = ONE_MINUTES_TIME * 15; + public static final long HALF_HOUR_TIME = FIFTEEN_MINUTES_TIME * 2; + public static final long ONE_HOUR_TIME = HALF_HOUR_TIME * 2; + public static final long SIX_HOUR_TIME = ONE_HOUR_TIME * 6; + public static final long HALF_DAY_TIME = SIX_HOUR_TIME * 2; + public static final long ONE_DAY_TIME = HALF_DAY_TIME * 2; + + /*重启后连接成功的时间*/ + public static final String REBOOT_LAST_ONNECT_TIME = "reboot_last_connect_time"; + /*WiFi连接后连接成功的时间*/ + public static final String WIFI_LAST_CONNECT_TIME = "WiFi_last_connect_time"; + /*打开设备信息连接成功的时间*/ + public static final String OPENINFO_LAST_ONNECT_TIME = "opneinfo_last_connect_time"; + + + @SuppressLint("StaticFieldLeak") + private static ConnectManager sInstance; + private Context mContext; + private MMKV mMMKV = MMKV.defaultMMKV(); + + private ConnectManager(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } + this.mContext = context; + + } + + public static void init(Context context) { + if (sInstance == null) { + Log.e(TAG, "init: "); + sInstance = new ConnectManager(context); + } + } + + public static ConnectManager getInstance() { + if (sInstance == null) { + throw new IllegalStateException("You must be init ConnectManager first"); + } + return sInstance; + } + + public long getConnectModeTime(ConnectMode connectMode) { + long time = 0; + switch (connectMode) { + case DEFAULT: + time = 0; + break; + case ONE_MINUTE: + time = ONE_MINUTES_TIME; + break; + case FIFTEEN_MINUTES: + time = FIFTEEN_MINUTES_TIME; + break; + case HALF_HOUR: + time = HALF_HOUR_TIME; + break; + case ONE_HOUR: + time = ONE_HOUR_TIME; + break; + case SIX_HOUR: + time = SIX_HOUR_TIME; + break; + case HALF_DAY: + time = HALF_DAY_TIME; + break; + case ONE_DAY: + time = ONE_DAY_TIME; + break; + default: + } + return time; + } + + public boolean isNeedConnect(String key, ConnectMode connectMode) { + long nowTime = System.currentTimeMillis(); + long lastTime = mMMKV.decodeLong(key, 0); + long intervalTime = getConnectModeTime(connectMode); + //防止一分钟内重复请求 + return nowTime - lastTime > intervalTime && nowTime - lastTime > ONE_MINUTES_TIME; + } + + + /** + * @return 重启后是否连接 + */ + public boolean isRebootFistConnect() { + long rebootTime = mMMKV.decodeLong(REBOOT_LAST_ONNECT_TIME, 0); + //只在开机后15内连接,其他情况为service重启 + long time = System.currentTimeMillis() - rebootTime; + return time < 15 * 1000; + } + + /** + * @return 今天WiFi连接是否有连接 + */ + public boolean isWiFiFistConnect() { + long time = mMMKV.decodeLong(WIFI_LAST_CONNECT_TIME, 0); + return !TimeUtils.isTodayTime(time); + } + + /** + * @return 今天打开设备信息后是否连接 + */ + public boolean isOpenInfoFistConnect() { + long time = mMMKV.decodeLong(OPENINFO_LAST_ONNECT_TIME, 0); + return !TimeUtils.isTodayTime(time); + } + + /** + * @param WiFiAlias + * @return 今天切换WiFi后是否连接 + */ + public boolean isWiFiCutoverFistConnect(String WiFiAlias) { + long time = mMMKV.decodeLong(WiFiAlias, 0); + return !TimeUtils.isTodayTime(time); + } + + +} diff --git a/src/com/aoleyun/os/manager/ConnectMode.java b/src/com/aoleyun/os/manager/ConnectMode.java new file mode 100644 index 0000000..731e298 --- /dev/null +++ b/src/com/aoleyun/os/manager/ConnectMode.java @@ -0,0 +1,12 @@ +package com.aoleyun.os.manager; + +public enum ConnectMode { + DEFAULT, + ONE_MINUTE, + FIFTEEN_MINUTES, + HALF_HOUR, + ONE_HOUR, + SIX_HOUR, + HALF_DAY, + ONE_DAY, +} \ No newline at end of file diff --git a/src/com/aoleyun/os/model/LoaderTask.java b/src/com/aoleyun/os/model/LoaderTask.java index f545aac..3cc2d39 100644 --- a/src/com/aoleyun/os/model/LoaderTask.java +++ b/src/com/aoleyun/os/model/LoaderTask.java @@ -73,6 +73,7 @@ import com.aoleyun.os.logging.FileLog; import com.aoleyun.os.provider.ImportDataTask; import com.aoleyun.os.shortcuts.DeepShortcutManager; import com.aoleyun.os.shortcuts.ShortcutKey; +import com.aoleyun.os.uiuiutils.JGYUtils; import com.aoleyun.os.util.ComponentKey; import com.aoleyun.os.util.LooperIdleLock; import com.aoleyun.os.util.MultiHashMap; @@ -303,34 +304,45 @@ public class LoaderTask implements Runnable { //add for load all app on workspace private void verifyApplications() { final Context context = mApp.getContext(); + ContentResolver crv = context.getContentResolver(); ArrayList> installQueue = new ArrayList<>(); final List profiles = mUserManager.getUserProfiles(); - String whiteList = Settings.System.getString(context.getContentResolver(), "only_jgy_shortcut_list"); + String whiteList = Settings.System.getString(crv, "only_jgy_shortcut_list"); Log.e("verifyApplications", "whiteList: " + whiteList); + int qch_unlock_ipad = Settings.System.getInt(crv, "qch_unlock_ipad", 0); + Log.e("verifyApplications", "qch_unlock_ipad: " + qch_unlock_ipad); + int desktop_clear = Settings.Global.getInt(crv, "desktop_clear", 0); + if (qch_unlock_ipad == 1 && desktop_clear != 1) { + Settings.Global.putInt(crv, "desktop_clear", 1); + JGYUtils.getInstance().cleanAoleLauncher3Cache(); + } for (UserHandle user : profiles) { final List apps = mLauncherApps.getActivityList(null, user); ArrayList added = new ArrayList(); synchronized (this) { + for (LauncherActivityInfo app : apps) { Log.e("verifyApplications", "AllAPP: " + app.getApplicationInfo().packageName); if (BuildConfig.APPLICATION_ID.equals(app.getApplicationInfo().packageName)) continue; /*系统应用*/ - if ((app.getApplicationFlags() & ApplicationInfo.FLAG_SYSTEM) == 1) { - if (!showApp.contains(app.getApplicationInfo().packageName)) { - Log.e("verifyApplications", "skip1: " + app.getApplicationInfo().packageName); - continue; - } - } else { - if (TextUtils.isEmpty(whiteList)) { + if (qch_unlock_ipad == 0) { + if ((app.getApplicationFlags() & ApplicationInfo.FLAG_SYSTEM) == 1) { if (!showApp.contains(app.getApplicationInfo().packageName)) { - Log.e("verifyApplications", "skip2: " + app.getApplicationInfo().packageName); + Log.e("verifyApplications", "skip1: " + app.getApplicationInfo().packageName); continue; } - } else if (!whiteList.contains(app.getApplicationInfo().packageName)) { - if (!showApp.contains(app.getApplicationInfo().packageName)) { - Log.e("verifyApplications", "skip3: " + app.getApplicationInfo().packageName); - continue; + } else { + if (TextUtils.isEmpty(whiteList)) { + if (!showApp.contains(app.getApplicationInfo().packageName)) { + Log.e("verifyApplications", "skip2: " + app.getApplicationInfo().packageName); + continue; + } + } else if (!whiteList.contains(app.getApplicationInfo().packageName)) { + if (!showApp.contains(app.getApplicationInfo().packageName)) { + Log.e("verifyApplications", "skip3: " + app.getApplicationInfo().packageName); + continue; + } } } } diff --git a/src/com/aoleyun/os/network/NetworkManager.java b/src/com/aoleyun/os/network/NetworkManager.java index 62a09f9..af413db 100644 --- a/src/com/aoleyun/os/network/NetworkManager.java +++ b/src/com/aoleyun/os/network/NetworkManager.java @@ -2,9 +2,16 @@ package com.aoleyun.os.network; import android.content.Context; import android.os.Environment; +import android.text.TextUtils; +import android.util.Log; +import com.aoleyun.os.disklrucache.CacheHelper; +import com.aoleyun.os.manager.ConnectManager; +import com.aoleyun.os.manager.ConnectMode; import com.aoleyun.os.network.bean.AppPasswdBean; import com.aoleyun.os.network.bean.BaseResponse; +import com.aoleyun.os.network.bean.Batch; +import com.aoleyun.os.uiuiutils.JGYUtils; import com.aoleyun.os.uiuiutils.Utils; import com.aoleyun.os.network.api.AddAppLog; import com.aoleyun.os.network.api.AppUsageRecordApi; @@ -13,13 +20,24 @@ import com.aoleyun.os.network.api.GetAppPassword; import com.aoleyun.os.network.api.GetJpushTagsApi; import com.aoleyun.os.network.api.RunningApp; import com.aoleyun.os.network.api.SendScreenshotApi; +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.tencent.android.tpush.XGIOperateCallback; +import com.tencent.android.tpush.XGPushManager; +import com.tencent.mmkv.MMKV; import java.io.File; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.concurrent.TimeUnit; import io.reactivex.Observable; +import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; +import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import okhttp3.Cache; import okhttp3.OkHttpClient; @@ -32,10 +50,15 @@ import retrofit2.converter.gson.GsonConverterFactory; public class NetworkManager { private static NetworkManager sInstance; private Context mContext; + private MMKV mMMKV = MMKV.defaultMMKV(); + private CacheHelper cacheHelper; + private static Retrofit mRetrofit; private NetworkManager(Context context) { this.mContext = context; + this.cacheHelper = new CacheHelper(mContext); + if (null == mRetrofit) { mRetrofit = new Retrofit.Builder() .client(okHttpClient) @@ -109,7 +132,7 @@ public class NetworkManager { * * @return */ - public Observable getJpushTagsObservable() { + public Observable> getJpushTagsObservable() { return mRetrofit.create(GetJpushTagsApi.class) .getJpushTags(Utils.getSerial()) .subscribeOn(Schedulers.io()) @@ -117,7 +140,6 @@ public class NetworkManager { } - public AppUsageRecordApi getAppUsageRecordControl() { return mRetrofit.create(AppUsageRecordApi.class); } @@ -127,4 +149,94 @@ public class NetworkManager { } -} + public interface onCompleteCallback { + void onComplete(); + } + + public void setPushTag(boolean refresh, onCompleteCallback callback) { + ConnectMode connectMode = ConnectMode.ONE_DAY; + if (refresh) { + connectMode = ConnectMode.FIFTEEN_MINUTES; + } + if (ConnectManager.getInstance().isNeedConnect(URLPath.GET_DEVICES_TAGS, connectMode)) { + setPushTag(callback); + } else { + String jsonString = cacheHelper.getAsString(URLPath.GET_DEVICES_TAGS); + //为 "" 是已经请求成功的 + if (jsonString == null) { + setPushTag(callback); + } else { + Set tagSets = mMMKV.decodeStringSet(URLPath.GET_DEVICES_TAGS); + Log.e("setPushTags", "tagSets: " + tagSets); + clearAndAppendTags(tagSets); + callback.onComplete(); + } + } + } + + + public void setPushTag(onCompleteCallback callback) { + Set set = new HashSet(); + JGYUtils.getInstance().getAppPlatform(new JGYUtils.GetAppPlatformCallback() { + @Override + public void AppPlatform(int platform) { + if (platform == JGYUtils.MTKPlatform) { + set.add(JGYUtils.MTKTag); + } else if (platform == JGYUtils.ZhanruiPlatform) { + set.add(JGYUtils.ZhanruiTag); + } + } + }); + getJpushTagsObservable() + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("setPushTag", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse response) { + Log.e("setPushTag", "onNext: " + response); + if (response.code == 200) { + String batch = response.data.getBatch(); + cacheHelper.put(URLPath.GET_DEVICES_TAGS, batch); + if (!TextUtils.isEmpty(batch)) { + set.add(batch); + } else { + Log.e("setPushTag", "onNext: " + "batch empty"); + } + } else { + cacheHelper.put(URLPath.GET_DEVICES_TAGS, ""); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("setPushTag", "onError: " + e.getMessage()); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("setPushTag", "onComplete: "); + mMMKV.encode(URLPath.GET_DEVICES_TAGS, set); + clearAndAppendTags(set); + callback.onComplete(); + } + }); + } + + synchronized private void clearAndAppendTags(Set tagSets) { + XGPushManager.clearAndAppendTags(mContext, "clearAndAppendTags :" + System.currentTimeMillis(), tagSets, new XGIOperateCallback() { + @Override + public void onSuccess(Object o, int i) { + Log.e("clearAndAppendTags", "onSuccess: " + o); + } + + @Override + public void onFail(Object o, int i, String s) { + Log.e("clearAndAppendTags", "onFail: " + o); + } + }); + } +} \ No newline at end of file diff --git a/src/com/aoleyun/os/network/api/GetJpushTagsApi.java b/src/com/aoleyun/os/network/api/GetJpushTagsApi.java index 93a6b78..3aa9507 100644 --- a/src/com/aoleyun/os/network/api/GetJpushTagsApi.java +++ b/src/com/aoleyun/os/network/api/GetJpushTagsApi.java @@ -3,6 +3,7 @@ package com.aoleyun.os.network.api; import com.aoleyun.os.network.bean.BaseResponse; import com.aoleyun.os.network.URLPath; +import com.aoleyun.os.network.bean.Batch; import io.reactivex.Observable; import retrofit2.http.GET; @@ -10,7 +11,7 @@ import retrofit2.http.Query; public interface GetJpushTagsApi { @GET(URLPath.GET_DEVICES_TAGS) - Observable getJpushTags( + Observable> getJpushTags( @Query("sn") String sn ); } diff --git a/src/com/aoleyun/os/network/bean/Batch.java b/src/com/aoleyun/os/network/bean/Batch.java new file mode 100644 index 0000000..9e14b55 --- /dev/null +++ b/src/com/aoleyun/os/network/bean/Batch.java @@ -0,0 +1,17 @@ +package com.aoleyun.os.network.bean; + +import java.io.Serializable; + +public class Batch implements Serializable { + private static final long serialVersionUID = 4284402995241045670L; + + String batch; + + public String getBatch() { + return batch; + } + + public void setBatch(String batch) { + this.batch = batch; + } +} diff --git a/src/com/aoleyun/os/tpush/Constants.java b/src/com/aoleyun/os/tpush/Constants.java new file mode 100644 index 0000000..05d9213 --- /dev/null +++ b/src/com/aoleyun/os/tpush/Constants.java @@ -0,0 +1,17 @@ +package com.aoleyun.os.tpush; + +/** + * Created by chacewang on 2019/7/5. + */ + +public class Constants { + public static final int TEST_LOCAL_NOTIFICATION = 1; + public static final int TEST_NOTIFICATION = 2; + public static final int TEST_SET_TAG = 3; + public static final int TEST_DEL_TAG = 4; + public static final int TEST_SET_ACCOUNT = 5; + public static final int TEST_DEL_ACCOUNT = 6; + + public static final String LOCAL_NOTIFICATION_TITLE = "localtest"; + public static final String TEST_TAG_NAME = "DiagnosisTag"; +} diff --git a/src/com/aoleyun/os/tpush/MessageReceiver.java b/src/com/aoleyun/os/tpush/MessageReceiver.java new file mode 100644 index 0000000..91c2137 --- /dev/null +++ b/src/com/aoleyun/os/tpush/MessageReceiver.java @@ -0,0 +1,320 @@ +package com.aoleyun.os.tpush; + +import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.text.TextUtils; +import android.util.Log; +import android.widget.Toast; + +import com.aoleyun.os.network.HTTPInterface; +import com.aoleyun.os.tpush.common.NotificationService; +import com.aoleyun.os.tpush.po.XGNotification; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.tencent.android.tpush.NotificationAction; +import com.tencent.android.tpush.XGPushBaseReceiver; +import com.tencent.android.tpush.XGPushClickedResult; +import com.tencent.android.tpush.XGPushRegisterResult; +import com.tencent.android.tpush.XGPushShowedResult; +import com.tencent.android.tpush.XGPushTextMessage; + +import java.text.SimpleDateFormat; +import java.util.Calendar; + +public class MessageReceiver extends XGPushBaseReceiver { + public static final String UPDATE_LISTVIEW_ACTION = "com.qq.xgdemo.activity.UPDATE_LISTVIEW"; + public static final String TEST_ACTION = "com.qq.xgdemo.activity.TEST_ACTION"; + public static final String LogTag = "xg.test"; + + private static final String TAG = MessageReceiver.class.getSimpleName(); + + /*删除应用*/ + private final String UPDATEPASSWD = "39"; + + + private Context mContext; + private ContentResolver mResolver; + private PackageManager mPackageManager; + + /** + * 消息透传处理 + * + * @param context + * @param message 解析自定义的 JSON + */ + @Override + public void onTextMessage(Context context, XGPushTextMessage message) { + this.mContext = context; + this.mResolver = context.getContentResolver(); + this.mPackageManager = context.getPackageManager(); + String text = "收到消息:" + message.toString(); + // 获取自定义key-value + String customContent = message.getCustomContent(); + if (customContent != null && customContent.length() != 0) { + JsonObject obj = JsonParser.parseString(customContent).getAsJsonObject(); + // key1为前台配置的key + if (!TextUtils.isEmpty(obj.get("key").getAsString())) { + String value = obj.get("key").getAsString(); + Log.d(LogTag, "get custom value:" + value); + } + // ... + } + // APP自主处理消息的过程... + Log.e(LogTag, text); + show(context, text); + processCustomMessage(context, message); + } + + /** + * 通知展示 + * + * @param context + * @param notifiShowedRlt 包含通知的内容 + */ + @Override + public void onNotificationShowedResult(Context context, XGPushShowedResult notifiShowedRlt) { + if (context == null || notifiShowedRlt == null) { + return; + } + XGNotification notific = new XGNotification(); + notific.setMsg_id(notifiShowedRlt.getMsgId()); + notific.setTitle(notifiShowedRlt.getTitle()); + notific.setContent(notifiShowedRlt.getContent()); + // notificationActionType==1为Activity,2为url,3为intent + notific.setNotificationActionType(notifiShowedRlt + .getNotificationActionType()); + // Activity,url,intent都可以通过getActivity()获得 + notific.setActivity(notifiShowedRlt.getActivity()); + notific.setUpdate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") + .format(Calendar.getInstance().getTime())); + NotificationService.getInstance(context).save(notific); + + Intent testIntent = new Intent(TEST_ACTION); + if (notifiShowedRlt.getTitle().equals(Constants.LOCAL_NOTIFICATION_TITLE)) { + testIntent.putExtra("step", Constants.TEST_LOCAL_NOTIFICATION); + } else { + testIntent.putExtra("step", Constants.TEST_NOTIFICATION); + } + context.sendBroadcast(testIntent); + + Intent viewIntent = new Intent(UPDATE_LISTVIEW_ACTION); + context.sendBroadcast(viewIntent); + show(context, "您有1条新消息, " + "通知被展示 , " + notifiShowedRlt.toString()); + Log.d(LogTag, "您有1条新消息, " + "通知被展示 , " + notifiShowedRlt.toString() + ", PushChannel:" + notifiShowedRlt.getPushChannel()); + } + + /** + * 注册回调 + * + * @param context + * @param errorCode 0 为成功,其它为错误码 + */ + @Override + public void onRegisterResult(Context context, int errorCode, XGPushRegisterResult message) { + if (context == null || message == null) { + return; + } + String text = ""; + if (errorCode == XGPushBaseReceiver.SUCCESS) { + // 在这里拿token + String token = message.getToken(); + text = "注册成功1. token:" + token; + } else { + text = message + "注册失败,错误码:" + errorCode; + } + Log.d(LogTag, text); + show(context, text); + } + + /** + * 反注册回调 + * + * @param context + * @param errorCode 0 为成功,其它为错误码 + */ + @Override + public void onUnregisterResult(Context context, int errorCode) { + if (context == null) { + return; + } + String text = ""; + if (errorCode == XGPushBaseReceiver.SUCCESS) { + text = "反注册成功"; + } else { + text = "反注册失败" + errorCode; + } + Log.d(LogTag, text); + show(context, text); + + } + + /** + * 设置标签回调 + * + * @param context + * @param errorCode 0 为成功,其它为错误码 + * @param tagName 设置的 TAG + */ + @Override + public void onSetTagResult(Context context, int errorCode, String tagName) { + if (context == null) { + return; + } + String text = ""; + if (errorCode == XGPushBaseReceiver.SUCCESS) { + text = "\"" + tagName + "\"设置成功"; + } else { + text = "\"" + tagName + "\"设置失败,错误码:" + errorCode; + } + Log.d(LogTag, text); + show(context, text); + + Intent testIntent = new Intent(TEST_ACTION); + testIntent.putExtra("step", Constants.TEST_SET_TAG); + context.sendBroadcast(testIntent); + } + + /** + * 删除标签的回调 + * + * @param context + * @param errorCode 0 为成功,其它为错误码 + * @param tagName 设置的 TAG + */ + @Override + public void onDeleteTagResult(Context context, int errorCode, String tagName) { + if (context == null) { + return; + } + String text = ""; + if (errorCode == XGPushBaseReceiver.SUCCESS) { + text = "\"" + tagName + "\"删除成功"; + } else { + text = "\"" + tagName + "\"删除失败,错误码:" + errorCode; + } + Log.d(LogTag, text); + show(context, text); + + Intent testIntent = new Intent(TEST_ACTION); + testIntent.putExtra("step", Constants.TEST_DEL_TAG); + context.sendBroadcast(testIntent); + } + + /** + * 设置账号回调 + * + * @param context + * @param errorCode 0 为成功,其它为错误码 + * @param account 设置的账号 + */ + @Override + public void onSetAccountResult(Context context, int errorCode, String account) { + Intent testIntent = new Intent(TEST_ACTION); + testIntent.putExtra("step", Constants.TEST_SET_ACCOUNT); + context.sendBroadcast(testIntent); + } + + + /** + * 删除账号回调 + * + * @param context + * @param errorCode 0 为成功,其它为错误码 + * @param account 设置的账号 + */ + @Override + public void onDeleteAccountResult(Context context, int errorCode, String account) { + Intent testIntent = new Intent(TEST_ACTION); + testIntent.putExtra("step", Constants.TEST_DEL_ACCOUNT); + context.sendBroadcast(testIntent); + } + + @Override + public void onSetAttributeResult(Context context, int i, String s) { + + } + + @Override + public void onDeleteAttributeResult(Context context, int i, String s) { + + } + + @Override + public void onQueryTagsResult(Context context, int errorCode, String data, String operateName) { + Log.i(LogTag, "action - onQueryTagsResult, errorCode:" + errorCode + ", operateName:" + operateName + ", data: " + data); + } + + /** + * 通知点击回调 actionType=1为该消息被清除,actionType=0为该消息被点击 + * + * @param context + * @param message 包含被点击通知的内容 + */ + @Override + public void onNotificationClickedResult(Context context, XGPushClickedResult message) { + if (context == null || message == null) { + return; + } + String text = ""; + if (message.getActionType() == NotificationAction.clicked.getType()) { + // 通知在通知栏被点击啦。。。。。 + // APP自己处理点击的相关动作 + // 这个动作可以在activity的onResume也能监听,请看第3点相关内容 + text = "通知被打开 :" + message; + } else if (message.getActionType() == NotificationAction.delete.getType()) { + // 通知被清除啦。。。。 + // APP自己处理通知被清除后的相关动作 + text = "通知被清除 :" + message; + } + Toast.makeText(context, "广播接收到通知被点击:" + message.toString(), + Toast.LENGTH_SHORT).show(); + // 获取自定义key-value + String customContent = message.getCustomContent(); + if (customContent != null && customContent.length() != 0) { + JsonObject obj = JsonParser.parseString(customContent).getAsJsonObject(); + // key1为前台配置的key + if (!TextUtils.isEmpty(obj.get("key").getAsString())) { + String value = obj.get("key").getAsString(); + Log.d(LogTag, "get custom value:" + value); + } + // ... + } + // APP自主处理的过程。。。 + Log.d(LogTag, text); + show(context, text); + } + + private void show(Context context, String text) { +// Toast.makeText(context, text, Toast.LENGTH_SHORT).show(); + } + + private int changeNum(int paramInt) { + return paramInt == 0 ? 1 : 0; + } + + private void processCustomMessage(Context context, XGPushTextMessage message) { + if (context == null || message == null) { + return; + } + + String title = message.getTitle(); + String content = message.getContent(); + JsonObject extrasJson = JsonParser.parseString(content).getAsJsonObject(); + + String extras = ""; + if (extrasJson.get("extras") != null) { + extras = extrasJson.get("extras").toString(); + } + + switch (title) { + case UPDATEPASSWD: + HTTPInterface.getAppPasswd(); + break; + default: + } + } + + +} diff --git a/src/com/aoleyun/os/tpush/common/DBOpenHelper.java b/src/com/aoleyun/os/tpush/common/DBOpenHelper.java new file mode 100644 index 0000000..8621c98 --- /dev/null +++ b/src/com/aoleyun/os/tpush/common/DBOpenHelper.java @@ -0,0 +1,23 @@ +package com.aoleyun.os.tpush.common; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +public class DBOpenHelper extends SQLiteOpenHelper { + + public DBOpenHelper(Context context) { + super(context, "XGExample.db", null, 1); + } + + @Override + public void onCreate(SQLiteDatabase db) { + db.execSQL("CREATE TABLE notification (id integer primary key autoincrement,msg_id varchar(64),title varchar(128),activity varchar(256),notificationActionType varchar(512),content text,update_time varchar(16))"); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + + } + +} diff --git a/src/com/aoleyun/os/tpush/common/NotificationService.java b/src/com/aoleyun/os/tpush/common/NotificationService.java new file mode 100644 index 0000000..0fb4d7f --- /dev/null +++ b/src/com/aoleyun/os/tpush/common/NotificationService.java @@ -0,0 +1,135 @@ +package com.aoleyun.os.tpush.common; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; + + +import com.aoleyun.os.tpush.po.XGNotification; + +import java.util.ArrayList; +import java.util.List; + +public class NotificationService { + private DBOpenHelper dbOpenHelper; + private static NotificationService instance = null; + + public NotificationService(Context context) { + this.dbOpenHelper = new DBOpenHelper(context); + } + + public synchronized static NotificationService getInstance(Context ctx) { + if (null == instance) { + instance = new NotificationService(ctx); + } + return instance; + } + + public void save(XGNotification notification) { + SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("msg_id", notification.getMsg_id()); + values.put("title", notification.getTitle()); + values.put("content", notification.getContent()); + values.put("activity", notification.getActivity()); + values.put("notificationActionType", notification.getNotificationActionType()); + values.put("update_time", notification.getUpdate_time()); + db.insert("notification", null, values); + } + + public void delete(Integer id) { + SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); + db.delete("notification", "id=?", new String[] { id.toString() }); + } + + public void deleteAll() { + SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); + db.delete("notification", "", null); + } + + public void update(XGNotification notification) { + SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("msg_id", notification.getMsg_id()); + values.put("title", notification.getTitle()); + values.put("content", notification.getContent()); + values.put("activity", notification.getActivity()); + values.put("notificationActionType", notification.getNotificationActionType()); + values.put("update_time", notification.getUpdate_time()); + db.update("notification", values, "id=?", new String[] { notification + .getId().toString() }); + } + + public XGNotification find(Integer id) { + SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); + Cursor cursor = db + .query("notification", + new String[] { "id,msg_id,title,content,activity,notificationActionType,update_time" }, + "id=?", new String[] { id.toString() }, null, null, + null, "1"); + try { + if (cursor.moveToFirst()) { + return new XGNotification(cursor.getInt(cursor + .getColumnIndex("id")), cursor.getLong(cursor + .getColumnIndex("msg_id")), cursor.getString(cursor + .getColumnIndex("title")), cursor.getString(cursor + .getColumnIndex("content")), cursor.getString(cursor + .getColumnIndex("activity")), cursor.getInt(cursor + .getColumnIndex("notificationActionType")), cursor.getString(cursor + .getColumnIndex("update_time"))); + } + return null; + } finally { + cursor.close(); + } + } + + public List getScrollData(int currentPage, int lineSize, + String msg_id) { + String firstResult = String.valueOf((currentPage - 1) * lineSize); + SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); + Cursor cursor = null; + try { + if (msg_id == null || "".equals(msg_id)) { + cursor = db + .query("notification", + new String[] { "id,msg_id,title,content,activity,notificationActionType,update_time" }, + null, null, null, null, "update_time DESC", + firstResult + "," + lineSize); + } else { + cursor = db + .query("notification", + new String[] { "id,msg_id,title,content,activity,notificationActionType,update_time" }, + "msg_id like ?", new String[] { msg_id + "%" }, + null, null, "update_time DESC", firstResult + + "," + lineSize); + } + List notifications = new ArrayList(); + while (cursor.moveToNext()) { + notifications.add(new XGNotification(cursor.getInt(cursor + .getColumnIndex("id")), cursor.getLong(cursor + .getColumnIndex("msg_id")), cursor.getString(cursor + .getColumnIndex("title")), cursor.getString(cursor + .getColumnIndex("content")), cursor.getString(cursor + .getColumnIndex("activity")), cursor.getInt(cursor + .getColumnIndex("notificationActionType")), cursor.getString(cursor + .getColumnIndex("update_time")))); + } + return notifications; + } finally { + cursor.close(); + } + } + + public int getCount() { + SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); + Cursor cursor = db.rawQuery("select count(*) from notification", null); + try { + cursor.moveToFirst(); + return cursor.getInt(0); + } finally { + cursor.close(); + } + } +} diff --git a/src/com/aoleyun/os/tpush/po/XGNotification.java b/src/com/aoleyun/os/tpush/po/XGNotification.java new file mode 100644 index 0000000..e3844e8 --- /dev/null +++ b/src/com/aoleyun/os/tpush/po/XGNotification.java @@ -0,0 +1,83 @@ +package com.aoleyun.os.tpush.po; + +public class XGNotification { + private Integer id; + private Long msg_id; + private String title; + private String content; + private String activity; + private int notificationActionType; + private String update_time; + + public XGNotification() { + + } + + public XGNotification(Integer id, Long msg_id, String title, + String content, String activity, int notificationActionType, String update_time) { + super(); + this.id = id; + this.msg_id = msg_id; + this.title = title; + this.content = content; + this.activity = activity; + this.notificationActionType = notificationActionType; + this.update_time = update_time; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Long getMsg_id() { + return msg_id; + } + + public void setMsg_id(Long msg_id) { + this.msg_id = msg_id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getUpdate_time() { + return update_time; + } + + public void setUpdate_time(String update_time) { + this.update_time = update_time; + } + + public String getActivity() { + return activity; + } + + public void setActivity(String activity) { + this.activity = activity; + } + + public int getNotificationActionType() { + return notificationActionType; + } + + public void setNotificationActionType(int notificationActionType) { + this.notificationActionType = notificationActionType; + } +} diff --git a/src/com/aoleyun/os/uiuiutils/CacheUtils.java b/src/com/aoleyun/os/uiuiutils/CacheUtils.java new file mode 100644 index 0000000..0cc6b6f --- /dev/null +++ b/src/com/aoleyun/os/uiuiutils/CacheUtils.java @@ -0,0 +1,139 @@ +package com.aoleyun.os.uiuiutils; + + +import android.content.Context; +import android.content.pm.IPackageDataObserver; +import android.content.pm.IPackageManager; +import android.content.pm.IPackageStatsObserver; +import android.content.pm.PackageManager; +import android.content.pm.PackageStats; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.util.Log; + +import java.lang.reflect.Method; + +public class CacheUtils { + + private static final String TAG = CacheUtils.class.getSimpleName(); + private final long MAX_WAIT_TIME = 60 * 1000; + private final long WAIT_TIME_INCR = 10 * 1000; + + /** + * 获取应用数据大小 cache + data + * + * @param context + * @param packageName + * @return + * @throws Exception + */ + + public long getApplicationCache(Context context, String packageName) throws Exception { + try { + PackageStatsObserver observer = new PackageStatsObserver(); + // wait on observer + synchronized (observer) { + Method method = PackageManager.class.getMethod("getPackageSizeInfo", new Class[] { String.class, IPackageStatsObserver.class }); + method.invoke(context.getPackageManager(), packageName, observer); +// getPm().getPackageSizeInfo(packageName, UserHandle.myUserId(), observer); + long waitTime = 0; + while ((!observer.isDone()) || (waitTime > MAX_WAIT_TIME)) { + observer.wait(WAIT_TIME_INCR); + waitTime += WAIT_TIME_INCR; + } + if (!observer.isDone()) { + throw new Exception("Timed out waiting for PackageStatsObserver.onGetStatsCompleted"); + } + } + Log.d(TAG, "toString " + observer.stats.toString()); + return observer.stats.dataSize + observer.stats.cacheSize; + } catch (RemoteException e) { + Log.w(TAG, "Failed to get handle for PackageManger Exception: " + e); + return -1; + } catch (InterruptedException e) { + Log.w(TAG, "InterruptedException :" + e); + return -1; + } + } + + /** + * 清除应用数据 + * + * @param context + * @param packageName + * @return + * @throws Exception + */ + public boolean cleanApplicationUserData(Context context, String packageName) throws Exception { + Log.e(TAG, "cleanApplicationUserData: " + packageName); + try { + PackageDataObserver observer = new PackageDataObserver(); + // wait on observer + synchronized (observer) { + Method method = PackageManager.class.getMethod("clearApplicationUserData", new Class[] { String.class, IPackageDataObserver.class }); + method.invoke(context.getPackageManager(), packageName, observer); +// getPm().deleteApplicationCacheFiles(appid, observer); + long waitTime = 0; + while (!observer.isDone() || (waitTime > MAX_WAIT_TIME)) { + observer.wait(WAIT_TIME_INCR); + waitTime += WAIT_TIME_INCR; + } + if (!observer.isDone()) { + throw new Exception("timed out waiting for PackageDataObserver.onRemoveCompleted"); + } + } + Log.d(TAG, "cleanApplicationCache " + observer.retValue); + return observer.retValue; + } catch (RemoteException e) { + Log.w(TAG, "Failed to get handle for PackageManger Exception: " + e); + return false; + } catch (InterruptedException e) { + Log.w(TAG, "InterruptedException :" + e); + return false; + } + } + + private IPackageManager getPm() { + return IPackageManager.Stub.asInterface(ServiceManager.getService("package")); + } + + class PackageDataObserver extends IPackageDataObserver.Stub { + public boolean retValue = false; + private boolean doneFlag = false; + + public void onRemoveCompleted(String packageName, boolean succeeded) throws RemoteException { + synchronized (this) { + retValue = succeeded; + doneFlag = true; + notifyAll(); + } + } + + public boolean isDone() { + return doneFlag; + } + } + + class PackageStatsObserver extends IPackageStatsObserver.Stub { + public boolean retValue = false; + public PackageStats stats; + private boolean doneFlag = false; + + public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException { + synchronized (this) { + retValue = succeeded; + stats = pStats; + doneFlag = true; + notifyAll(); + } + } + + public boolean isDone() { + return doneFlag; + } + } + + + +} + diff --git a/src/com/aoleyun/os/uiuiutils/GsonUtils.java b/src/com/aoleyun/os/uiuiutils/GsonUtils.java new file mode 100644 index 0000000..2df74d6 --- /dev/null +++ b/src/com/aoleyun/os/uiuiutils/GsonUtils.java @@ -0,0 +1,29 @@ +package com.aoleyun.os.uiuiutils; + +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.google.gson.reflect.TypeToken; + +import java.lang.reflect.Type; + + +public class GsonUtils { + public static JsonObject getJsonObject(String jsonString) { + JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject(); + return jsonObject; + } + + // TODO: 2022/3/31 暂时没有实现 + public static E getJsonFromType(String jsonString) { + Gson gson = new Gson(); + Type Type = new TypeToken() { + }.getType(); + E e = gson.fromJson(jsonString, Type); + return e; + } + + public static String toJsonString(Object o) { + return new Gson().toJson(o); + } +} diff --git a/src/com/aoleyun/os/uiuiutils/JGYUtils.java b/src/com/aoleyun/os/uiuiutils/JGYUtils.java index 29bb8e7..2f87789 100644 --- a/src/com/aoleyun/os/uiuiutils/JGYUtils.java +++ b/src/com/aoleyun/os/uiuiutils/JGYUtils.java @@ -207,5 +207,23 @@ public class JGYUtils { bootIntent.setComponent(new ComponentName(PACKAGE_APPSTORE, CLASS_APPSTORE)); mContext.sendBroadcast(bootIntent); } + + public void cleanLauncher3Cache() { + try { + new CacheUtils().cleanApplicationUserData(mContext, "com.android.launcher3"); + } catch (Exception e) { + Log.e(TAG, "onReceive: " + e.getMessage()); + e.printStackTrace(); + } + } + + public void cleanAoleLauncher3Cache() { + try { + new CacheUtils().cleanApplicationUserData(mContext, "com.aoleyun.os"); + } catch (Exception e) { + Log.e(TAG, "onReceive: " + e.getMessage()); + e.printStackTrace(); + } + } } diff --git a/src/com/aoleyun/os/uiuiutils/TimeUtils.java b/src/com/aoleyun/os/uiuiutils/TimeUtils.java index 8a8c143..1d8506e 100644 --- a/src/com/aoleyun/os/uiuiutils/TimeUtils.java +++ b/src/com/aoleyun/os/uiuiutils/TimeUtils.java @@ -2,11 +2,17 @@ package com.aoleyun.os.uiuiutils; import android.annotation.SuppressLint; import android.content.Context; +import android.os.Build; import android.util.Log; +import androidx.annotation.RequiresApi; + import java.io.Serializable; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Date; public class TimeUtils { @@ -106,5 +112,20 @@ public class TimeUtils { return false; } + @RequiresApi(api = Build.VERSION_CODES.O) + public static boolean isTodayTime(long timeStamp) { + String time = transferLongToDate(timeStamp); + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime localTime = LocalDateTime.parse(time, dtf); + LocalDateTime startTime = LocalDate.now().atTime(0, 0, 0); + LocalDateTime endTime = LocalDate.now().atTime(23, 59, 59); + return localTime.isAfter(startTime) && localTime.isBefore(endTime); + } + + public static String transferLongToDate(Long millSec) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = new Date(millSec); + return sdf.format(date); + } }