diff --git a/AndroidManifest-common.xml b/AndroidManifest-common.xml index 85cc94b..c4db91f 100644 --- a/AndroidManifest-common.xml +++ b/AndroidManifest-common.xml @@ -69,7 +69,7 @@ () { - @Override - public void onSubscribe(Disposable d) { - Log.e("onStart", "onSubscribe: "); - } - - @Override - public void onNext(BaseResponse baseResponse) { - Log.e("onStart", "onNext: " + baseResponse); - } - - @Override - public void onError(Throwable e) { - Log.e("onStart", "onError: " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.e("onStart", "onComplete: "); - } - }); -// if (userInfo != null) { -// HTTPInterface.sendTimeLog(handler, userInfo, app.getLabel(), 2, time - MyApplication.getInstance().getRunTime()); -// } else { -// Log.e("fht", "userInfo = null"); -// } - //设为空值 - TimeUtils.getInstance().setAppPackageName(""); - } else { - Log.e("fht", "app = null" + packagename); - } -// } catch (Exception e) { -// Log.e("fht", e.getMessage()); -// } -// } -// } else { -// Log.e("packagename", "packagename is null"); - - - } - if (mLauncherCallbacks != null) { mLauncherCallbacks.onStart(); } mAppWidgetHost.setListenIfResumed(true); RaceConditionTracker.onEvent(ON_START_EVT, EXIT); + + /*移除最近任务列表*/ + TimeUtils.getInstance().setEndTime(System.currentTimeMillis()); + removeRecentTask(); + String packageName = TimeUtils.getInstance().getAppPackageName(); + if (TextUtils.isEmpty(packageName)) { + Log.e("onStart", "app = null" + packageName); + return; + } + sendAppUsageRecord(packageName); } - private void SendcloseApp(String packageName) { - PackageManager pm = MyApplication.getInstance().getPackageManager(); - PackageInfo appInfo = null; - try { - appInfo = pm.getPackageInfo(packageName, 0); - } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); - } - if (null != appInfo) { - long appVersionCode; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - appVersionCode = appInfo.getLongVersionCode(); - } else { - appVersionCode = appInfo.versionCode; - } - AddAppLog appLog = NetworkManager.getInstance().getapplogControl(); - String sn = Utils.getSerial(); - appLog.addLog(sn, packageName, appVersionCode, System.currentTimeMillis() / 1000, 2) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { + private void sendAppUsageRecord(String packageName) { + Log.e("sendAppUsageRecord", "packageName: " + packageName); + String app_name = APKUtils.getAppNameByPackage(Launcher.this, packageName); + long openTime = TimeUtils.getInstance().getStartTime() / 1000; + long closeTime = TimeUtils.getInstance().getEndTime() / 1000; + NetworkManager.getInstance().getAppUsageRecordControl() + .sendAppUsageRecord(Utils.getSerial(), packageName, app_name, openTime, closeTime) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + Log.e("sendAppUsageRecord", "onSubscribe: "); + } - } + @Override + public void onNext(BaseResponse baseResponse) { + Log.e("sendAppUsageRecord", "onNext: " + baseResponse); + } - @Override - public void onNext(BaseResponse baseResponse) { - int code = baseResponse.code; - if (code == 200) { - Log.e("SendcloseApp", "onNext: " + code + baseResponse.data); - } else { - Log.e("SendcloseApp", "onNext: " + code + baseResponse.msg); - } - } - - @Override - public void onError(Throwable e) { - Log.e("SendcloseApp", "onError: " + e.getMessage()); - } - - @Override - public void onComplete() { - - } - }); - } + @Override + public void onError(Throwable e) { + Log.e("sendAppUsageRecord", "onError: " + e.getMessage()); + } + @Override + public void onComplete() { + Log.e("sendAppUsageRecord", "onComplete: "); + } + }); } @@ -1255,12 +1183,9 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, @Override protected void onResume() { - Log.e(TAG, "onResume: "); RaceConditionTracker.onEvent(ON_RESUME_EVT, ENTER); TraceHelper.beginSection("ON_RESUME"); super.onResume(); - removeRecentTask(); - start.onstar(System.currentTimeMillis()); TraceHelper.partitionSection("ON_RESUME", "superCall"); mHandler.removeCallbacks(mHandleDeferredResume); @@ -1281,19 +1206,20 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, TraceHelper.endSection("ON_RESUME"); RaceConditionTracker.onEvent(ON_RESUME_EVT, EXIT); + + Log.e(TAG, "onResume: "); isForeground = true; -// TimeUtils.getInstance().setAppPackageName(BuildConfig.APPLICATION_ID); -// TimeUtils.getInstance().setStartTime(System.currentTimeMillis()); - HTTPInterface.getAppPasswd(); - start.onstar(System.currentTimeMillis()); + /*打开霸屏应用*/ String always_top_packagename = Settings.System.getString(getContentResolver(), "always_top_packagename"); if (!TextUtils.isEmpty(always_top_packagename)) { APKUtils.openPackage(Launcher.this, always_top_packagename); } - + mUpdate.checkUpdate(System.currentTimeMillis()); + mPasswd.getPassword(System.currentTimeMillis()); + TimeUtils.getInstance().setAppPackageName(BuildConfig.APPLICATION_ID); + HTTPInterface.sendRunningApp(Launcher.this); } - private void removeRecentTask() { Handler.getMain().postDelayed(new Runnable() { @Override @@ -1313,22 +1239,56 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, }, 1000); } + private Passwd mPasswd; - private Start start; - - private interface Start { - void onstar(long time); + private interface Passwd { + void getPassword(long time); } - private ObservableOnSubscribe subscribe = new ObservableOnSubscribe() { + private ObservableOnSubscribe passwdSubscribe = new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter emitter) throws Exception { - start = emitter::onNext; + mPasswd = emitter::onNext; + } + }; + + private Observer passwdObserver = new Observer() { + @Override + public void onSubscribe(Disposable d) { + Log.e("passwdObserver", "onSubscribe: "); + } + + @Override + public void onNext(Long aLong) { + Log.e("passwdObserver", "onNext: " + aLong); + HTTPInterface.getAppPasswd(); + } + + @Override + public void onError(Throwable e) { + Log.e("passwdObserver", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("passwdObserver", "onComplete: "); + } + }; + + private Update mUpdate; + + private interface Update { + void checkUpdate(long time); + } + + private ObservableOnSubscribe updateSubscribe = new ObservableOnSubscribe() { + @Override + public void subscribe(ObservableEmitter emitter) throws Exception { + mUpdate = emitter::onNext; } }; private Observer updateObserver = new Observer() { - @Override public void onSubscribe(Disposable d) { Log.e("updateObserver", "onSubscribe: "); @@ -1352,7 +1312,8 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, }; private void checkUpdate() { - NetworkManager.getInstance().getCheckUpdateObservable() + NetworkManager.getInstance() + .getCheckUpdateObservable() .getCheckUpdate(BuildConfig.APPLICATION_ID, BuildConfig.VERSION_CODE, JGYUtils.getInstance().checkAppPlatform()) @@ -1428,7 +1389,6 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, mLauncherCallbacks.onPause(); } isForeground = false; -// removeRecentTask(); } @Override diff --git a/src/com/aoleyun/os/base/MyApplication.java b/src/com/aoleyun/os/base/BaseApplication.java similarity index 97% rename from src/com/aoleyun/os/base/MyApplication.java rename to src/com/aoleyun/os/base/BaseApplication.java index 4cb1118..bcac4ed 100644 --- a/src/com/aoleyun/os/base/MyApplication.java +++ b/src/com/aoleyun/os/base/BaseApplication.java @@ -6,8 +6,8 @@ import android.content.Context; import android.util.Log; import com.aoleyun.os.BuildConfig; -import com.aoleyun.os.TTUtils.ToastUtil; -import com.aoleyun.os.TTUtils.Utils; +import com.aoleyun.os.uiuiutils.ToastUtil; +import com.aoleyun.os.uiuiutils.Utils; import com.aoleyun.os.jpush.TagAliasOperatorHelper; import com.aoleyun.os.network.HTTPInterface; import com.aoleyun.os.network.NetworkManager; @@ -35,17 +35,21 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -public class MyApplication extends Application { - private static final String TAG = MyApplication.class.getSimpleName(); +public class BaseApplication extends Application { + private static final String TAG = BaseApplication.class.getSimpleName(); @SuppressLint("StaticFieldLeak") - private static MyApplication app; + private static BaseApplication app; @SuppressLint("StaticFieldLeak") private static Context context; - public static MyApplication getInstance() { + public static BaseApplication getInstance() { return app; } + public static Context getContext(){ + return context; + } + @Override public void onCreate() { super.onCreate(); diff --git a/src/com/aoleyun/os/icons/IconCache.java b/src/com/aoleyun/os/icons/IconCache.java index 9601fbd..648400c 100644 --- a/src/com/aoleyun/os/icons/IconCache.java +++ b/src/com/aoleyun/os/icons/IconCache.java @@ -37,7 +37,7 @@ import com.aoleyun.os.LauncherFiles; import com.aoleyun.os.LauncherModel; import com.aoleyun.os.MainThreadExecutor; import com.aoleyun.os.R; -import com.aoleyun.os.TTUtils.BitmapUtils; +import com.aoleyun.os.uiuiutils.BitmapUtils; import com.aoleyun.os.WorkspaceItemInfo; import com.aoleyun.os.Utilities; import com.aoleyun.os.compat.LauncherAppsCompat; diff --git a/src/com/aoleyun/os/jpush/MyJPushMessageReceiver.java b/src/com/aoleyun/os/jpush/MyJPushMessageReceiver.java index 02b4a16..1f6f237 100644 --- a/src/com/aoleyun/os/jpush/MyJPushMessageReceiver.java +++ b/src/com/aoleyun/os/jpush/MyJPushMessageReceiver.java @@ -2,7 +2,7 @@ package com.aoleyun.os.jpush; import android.content.Context; -import com.aoleyun.os.base.MyApplication; +import com.aoleyun.os.base.BaseApplication; import cn.jpush.android.api.CustomMessage; import cn.jpush.android.api.JPushMessage; @@ -17,7 +17,7 @@ public class MyJPushMessageReceiver extends JPushMessageReceiver { public void onTagOperatorResult(Context context, JPushMessage jPushMessage) { TagAliasOperatorHelper.getInstance().onTagOperatorResult(context,jPushMessage); super.onTagOperatorResult(context, jPushMessage); - MyApplication.getInstance().onTagOperatorResult(jPushMessage); + BaseApplication.getInstance().onTagOperatorResult(jPushMessage); } @Override public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage){ @@ -28,7 +28,7 @@ public class MyJPushMessageReceiver extends JPushMessageReceiver { public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) { TagAliasOperatorHelper.getInstance().onAliasOperatorResult(context,jPushMessage); super.onAliasOperatorResult(context, jPushMessage); - MyApplication.getInstance().onAliasOperatorResult(jPushMessage); + BaseApplication.getInstance().onAliasOperatorResult(jPushMessage); } @Override diff --git a/src/com/aoleyun/os/jpush/MyReceiver.java b/src/com/aoleyun/os/jpush/MyReceiver.java index 57b2472..566214f 100644 --- a/src/com/aoleyun/os/jpush/MyReceiver.java +++ b/src/com/aoleyun/os/jpush/MyReceiver.java @@ -7,6 +7,8 @@ import android.os.Bundle; import android.text.TextUtils; import com.aoleyun.os.network.HTTPInterface; +import com.aoleyun.os.service.MainService; +import com.aoleyun.os.uiuiutils.ForegroundAppUtil; import org.json.JSONException; import org.json.JSONObject; @@ -134,7 +136,7 @@ public class MyReceiver extends BroadcastReceiver { switch (message) { case SEND_RUNNING_APP: - HTTPInterface.SendRunningApp(context); + getRunningApp(context); break; case UPDATE_APP_LOCK: HTTPInterface.getAppPasswd(); @@ -146,4 +148,8 @@ public class MyReceiver extends BroadcastReceiver { } + private void getRunningApp(Context context) { + HTTPInterface.sendRunningApp(context); + } + } diff --git a/src/com/aoleyun/os/jpush/TagAliasOperatorHelper.java b/src/com/aoleyun/os/jpush/TagAliasOperatorHelper.java index 0e8adf7..0c8c321 100644 --- a/src/com/aoleyun/os/jpush/TagAliasOperatorHelper.java +++ b/src/com/aoleyun/os/jpush/TagAliasOperatorHelper.java @@ -6,7 +6,7 @@ import android.os.Message; import android.util.Log; import android.util.SparseArray; -import com.aoleyun.os.TTUtils.ToastUtil; +import com.aoleyun.os.uiuiutils.ToastUtil; import java.util.Locale; import java.util.Set; diff --git a/src/com/aoleyun/os/model/AddWorkspaceItemsTask.java b/src/com/aoleyun/os/model/AddWorkspaceItemsTask.java index dbcf9bd..ec439ab 100644 --- a/src/com/aoleyun/os/model/AddWorkspaceItemsTask.java +++ b/src/com/aoleyun/os/model/AddWorkspaceItemsTask.java @@ -220,7 +220,9 @@ public class AddWorkspaceItemsTask extends BaseModelUpdateTask { int screenCount = workspaceScreens.size(); // First check the preferred screen. - int preferredScreenIndex = workspaceScreens.isEmpty() ? 0 : 1; +// int preferredScreenIndex = workspaceScreens.isEmpty() ? 0 : 1; + /*从第一页开始显示*/ + int preferredScreenIndex = 0; if (preferredScreenIndex < screenCount) { screenId = workspaceScreens.get(preferredScreenIndex); found = findNextAvailableIconSpaceInScreen( diff --git a/src/com/aoleyun/os/model/LoaderTask.java b/src/com/aoleyun/os/model/LoaderTask.java index c5d21cb..9aa83d6 100644 --- a/src/com/aoleyun/os/model/LoaderTask.java +++ b/src/com/aoleyun/os/model/LoaderTask.java @@ -27,6 +27,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.ApplicationInfo; import android.content.pm.LauncherActivityInfo; import android.content.pm.PackageInstaller; import android.content.pm.PackageInstaller.SessionInfo; @@ -250,7 +251,7 @@ public class LoaderTask implements Runnable { /** * 需要隐藏的图标 */ - private List hideApp = new ArrayList() {{ + private HashSet hideApp = new HashSet() {{ this.add(BuildConfig.APPLICATION_ID); this.add("com.android.quicksearchbox"); this.add("com.st.nfc.dta.mobile"); @@ -260,6 +261,36 @@ public class LoaderTask implements Runnable { this.add("com.android.email"); }}; + public static HashSet showApp = new HashSet() {{ +// this.add(BuildConfig.APPLICATION_ID); + //aoleyun + this.add("com.aoleyun.sn"); + this.add("com.aoleyun.appstore"); + this.add("com.aoleyun.postern"); + this.add("com.aoleyun.browser"); + this.add("com.aoleyun.info"); + this.add("com.aoleyun.file"); + this.add("com.aoleyun.reos"); + this.add("com.aoleyunos.dop1"); + this.add("com.aoleyunos.dop2"); + //system + this.add("com.android.documentsui"); + this.add("com.android.messaging"); + this.add("com.android.music"); + this.add("com.android.camera"); + this.add("com.android.camera2"); + this.add("com.android.settings"); + this.add("com.android.stk"); + this.add("com.mediatek.camera"); + this.add("com.mediatek.filemanager"); + //uiui + this.add("com.calculator.uiui"); + this.add("com.notepad.uiui"); + this.add("com.calendar.uiui"); + this.add("com.alarmclock.uiui"); + this.add("com.uiui.videoplayer"); + }}; + //add for load all app on workspace private void verifyApplications() { final Context context = mApp.getContext(); @@ -270,8 +301,11 @@ public class LoaderTask implements Runnable { ArrayList added = new ArrayList(); synchronized (this) { for (LauncherActivityInfo app : apps) { - if (hideApp.contains(app.getApplicationInfo().packageName)) { - continue; + /*系统应用*/ + if ((app.getApplicationFlags() & ApplicationInfo.FLAG_SYSTEM) == 1) { + if (!showApp.contains(app.getApplicationInfo().packageName)) { + continue; + } } InstallShortcutReceiver.PendingInstallShortcutInfo pendingInstallShortcutInfo = new InstallShortcutReceiver.PendingInstallShortcutInfo(app, context); added.add(pendingInstallShortcutInfo); diff --git a/src/com/aoleyun/os/network/HTTPInterface.java b/src/com/aoleyun/os/network/HTTPInterface.java index 395f354..7a83b36 100644 --- a/src/com/aoleyun/os/network/HTTPInterface.java +++ b/src/com/aoleyun/os/network/HTTPInterface.java @@ -4,7 +4,9 @@ import android.content.Context; import android.text.TextUtils; import android.util.Log; -import com.aoleyun.os.TTUtils.APKUtils; +import com.aoleyun.os.network.bean.AppPasswdBean; +import com.aoleyun.os.network.bean.BaseResponse; +import com.aoleyun.os.uiuiutils.APKUtils; import com.aoleyun.os.jpush.TagAliasOperatorHelper; import com.aoleyun.os.uiuiutils.JGYUtils; import com.aoleyun.os.uiuiutils.TimeUtils; @@ -117,8 +119,14 @@ public class HTTPInterface { }); } - public static void SendRunningApp(Context context) { + /** + * 发送正在运行的app信息 + * + * @param context + */ + public static void sendRunningApp(Context context) { String packageName = TimeUtils.getInstance().getAppPackageName(); + Log.e("SendRunningApp", "packageName: " + packageName); long time = TimeUtils.getInstance().getStartTime(); JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("app_package", packageName); @@ -136,7 +144,7 @@ public class HTTPInterface { @Override public void onNext(BaseResponse baseResponse) { - Log.e("SendRunningApp", "onSubscribe: " + baseResponse); + Log.e("SendRunningApp", "onNext: " + baseResponse); } @Override diff --git a/src/com/aoleyun/os/network/NetworkManager.java b/src/com/aoleyun/os/network/NetworkManager.java index f090290..62a09f9 100644 --- a/src/com/aoleyun/os/network/NetworkManager.java +++ b/src/com/aoleyun/os/network/NetworkManager.java @@ -3,7 +3,9 @@ package com.aoleyun.os.network; import android.content.Context; import android.os.Environment; -import com.aoleyun.os.TTUtils.Utils; +import com.aoleyun.os.network.bean.AppPasswdBean; +import com.aoleyun.os.network.bean.BaseResponse; +import com.aoleyun.os.uiuiutils.Utils; import com.aoleyun.os.network.api.AddAppLog; import com.aoleyun.os.network.api.AppUsageRecordApi; import com.aoleyun.os.network.api.CheckUpdate; diff --git a/src/com/aoleyun/os/network/api/AddAppLog.java b/src/com/aoleyun/os/network/api/AddAppLog.java index 59115d6..d7124ad 100644 --- a/src/com/aoleyun/os/network/api/AddAppLog.java +++ b/src/com/aoleyun/os/network/api/AddAppLog.java @@ -1,6 +1,6 @@ package com.aoleyun.os.network.api; -import com.aoleyun.os.network.BaseResponse; +import com.aoleyun.os.network.bean.BaseResponse; import com.aoleyun.os.network.URLPath; import io.reactivex.Observable; diff --git a/src/com/aoleyun/os/network/api/AppUsageRecordApi.java b/src/com/aoleyun/os/network/api/AppUsageRecordApi.java index 0b5d805..194589c 100644 --- a/src/com/aoleyun/os/network/api/AppUsageRecordApi.java +++ b/src/com/aoleyun/os/network/api/AppUsageRecordApi.java @@ -1,6 +1,6 @@ package com.aoleyun.os.network.api; -import com.aoleyun.os.network.BaseResponse; +import com.aoleyun.os.network.bean.BaseResponse; import com.aoleyun.os.network.URLPath; @@ -11,11 +11,11 @@ import retrofit2.http.POST; public interface AppUsageRecordApi { @FormUrlEncoded - @POST(value = URLPath.SEND_APP_RECORD) + @POST(URLPath.SEND_APP_RECORD) Observable sendAppUsageRecord( @Field("sn") String sn, - @Field("app_name") String app_name, @Field("app_package") String app_package, + @Field("app_name") String app_name, @Field("open_time") long open_time, @Field("close_time") long close_time ); diff --git a/src/com/aoleyun/os/network/api/CheckUpdate.java b/src/com/aoleyun/os/network/api/CheckUpdate.java index 17867dc..34a3fdb 100644 --- a/src/com/aoleyun/os/network/api/CheckUpdate.java +++ b/src/com/aoleyun/os/network/api/CheckUpdate.java @@ -1,7 +1,7 @@ package com.aoleyun.os.network.api; -import com.aoleyun.os.network.BaseResponse; -import com.aoleyun.os.network.NewestAppUpdateResult; +import com.aoleyun.os.network.bean.BaseResponse; +import com.aoleyun.os.network.bean.NewestAppUpdateResult; import com.aoleyun.os.network.URLPath; import io.reactivex.Observable; diff --git a/src/com/aoleyun/os/network/api/GetAppPassword.java b/src/com/aoleyun/os/network/api/GetAppPassword.java index 877a7b6..6deca93 100644 --- a/src/com/aoleyun/os/network/api/GetAppPassword.java +++ b/src/com/aoleyun/os/network/api/GetAppPassword.java @@ -1,7 +1,7 @@ package com.aoleyun.os.network.api; -import com.aoleyun.os.network.AppPasswdBean; -import com.aoleyun.os.network.BaseResponse; +import com.aoleyun.os.network.bean.AppPasswdBean; +import com.aoleyun.os.network.bean.BaseResponse; import com.aoleyun.os.network.URLPath; import java.util.List; diff --git a/src/com/aoleyun/os/network/api/GetJpushTagsApi.java b/src/com/aoleyun/os/network/api/GetJpushTagsApi.java index c87ef6b..93a6b78 100644 --- a/src/com/aoleyun/os/network/api/GetJpushTagsApi.java +++ b/src/com/aoleyun/os/network/api/GetJpushTagsApi.java @@ -1,7 +1,7 @@ package com.aoleyun.os.network.api; -import com.aoleyun.os.network.BaseResponse; +import com.aoleyun.os.network.bean.BaseResponse; import com.aoleyun.os.network.URLPath; import io.reactivex.Observable; diff --git a/src/com/aoleyun/os/network/api/RunningApp.java b/src/com/aoleyun/os/network/api/RunningApp.java index c0c621a..b482dc4 100644 --- a/src/com/aoleyun/os/network/api/RunningApp.java +++ b/src/com/aoleyun/os/network/api/RunningApp.java @@ -1,6 +1,6 @@ package com.aoleyun.os.network.api; -import com.aoleyun.os.network.BaseResponse; +import com.aoleyun.os.network.bean.BaseResponse; import com.aoleyun.os.network.URLPath; import io.reactivex.Observable; diff --git a/src/com/aoleyun/os/network/api/SendScreenshotApi.java b/src/com/aoleyun/os/network/api/SendScreenshotApi.java index 3f2bdc3..a26f600 100644 --- a/src/com/aoleyun/os/network/api/SendScreenshotApi.java +++ b/src/com/aoleyun/os/network/api/SendScreenshotApi.java @@ -1,6 +1,6 @@ package com.aoleyun.os.network.api; -import com.aoleyun.os.network.BaseResponse; +import com.aoleyun.os.network.bean.BaseResponse; import com.aoleyun.os.network.URLPath; import java.util.Map; diff --git a/src/com/aoleyun/os/network/AppPasswdBean.java b/src/com/aoleyun/os/network/bean/AppPasswdBean.java similarity index 94% rename from src/com/aoleyun/os/network/AppPasswdBean.java rename to src/com/aoleyun/os/network/bean/AppPasswdBean.java index a6fbf07..6123169 100644 --- a/src/com/aoleyun/os/network/AppPasswdBean.java +++ b/src/com/aoleyun/os/network/bean/AppPasswdBean.java @@ -1,4 +1,4 @@ -package com.aoleyun.os.network; +package com.aoleyun.os.network.bean; import java.io.Serializable; diff --git a/src/com/aoleyun/os/network/BaseResponse.java b/src/com/aoleyun/os/network/bean/BaseResponse.java similarity index 93% rename from src/com/aoleyun/os/network/BaseResponse.java rename to src/com/aoleyun/os/network/bean/BaseResponse.java index 59439e6..c0174c7 100644 --- a/src/com/aoleyun/os/network/BaseResponse.java +++ b/src/com/aoleyun/os/network/bean/BaseResponse.java @@ -1,4 +1,4 @@ -package com.aoleyun.os.network; +package com.aoleyun.os.network.bean; import androidx.annotation.NonNull; diff --git a/src/com/aoleyun/os/network/NewestAppUpdateResult.java b/src/com/aoleyun/os/network/bean/NewestAppUpdateResult.java similarity index 97% rename from src/com/aoleyun/os/network/NewestAppUpdateResult.java rename to src/com/aoleyun/os/network/bean/NewestAppUpdateResult.java index d8e2f3b..f37f883 100644 --- a/src/com/aoleyun/os/network/NewestAppUpdateResult.java +++ b/src/com/aoleyun/os/network/bean/NewestAppUpdateResult.java @@ -1,4 +1,4 @@ -package com.aoleyun.os.network; +package com.aoleyun.os.network.bean; import androidx.annotation.NonNull; diff --git a/src/com/aoleyun/os/service/MainService.java b/src/com/aoleyun/os/service/MainService.java index 68f0474..62cab45 100644 --- a/src/com/aoleyun/os/service/MainService.java +++ b/src/com/aoleyun/os/service/MainService.java @@ -10,11 +10,11 @@ import android.os.PowerManager; import android.text.TextUtils; import android.util.Log; -import com.aoleyun.os.Launcher; -import com.aoleyun.os.TTUtils.APKUtils; -import com.aoleyun.os.TTUtils.CmdUtil; -import com.aoleyun.os.TTUtils.Utils; -import com.aoleyun.os.network.BaseResponse; +import com.aoleyun.os.BuildConfig; +import com.aoleyun.os.uiuiutils.APKUtils; +import com.aoleyun.os.uiuiutils.CmdUtil; +import com.aoleyun.os.uiuiutils.Utils; +import com.aoleyun.os.network.bean.BaseResponse; import com.aoleyun.os.network.NetworkManager; import com.aoleyun.os.uiuiutils.ForegroundAppUtil; import com.aoleyun.os.uiuiutils.TimeUtils; @@ -92,9 +92,8 @@ public class MainService extends Service { } } - private final static long ONE_HOURS_TIME = 60 * 60; - private final static long TEN_MINUTES_TIME = 60 * 10; - + private final static long ONE_HOURS_TIME = 60 * 60 * 1000; + private final static long TEN_MINUTES_TIME = 60 * 10 * 1000; private void isScreenshot() { //1、检测应用使用情况,如果设备长时间运行一个应用,超过1小时,启动截屏一次。 @@ -104,7 +103,7 @@ public class MainService extends Service { String topPackageName = ForegroundAppUtil.getForegroundPackageName(MainService.this); Log.e(TAG, "isScreenshot: " + topPackageName); String pkg = TimeUtils.getInstance().getAppPackageName(); - if (TextUtils.isEmpty(pkg)) { + if (TextUtils.isEmpty(pkg) || BuildConfig.APPLICATION_ID.equals(pkg)) { return; } diff --git a/src/com/aoleyun/os/Statistics/AppInformation.java b/src/com/aoleyun/os/statistics/AppInformation.java similarity index 99% rename from src/com/aoleyun/os/Statistics/AppInformation.java rename to src/com/aoleyun/os/statistics/AppInformation.java index 6a45889..8ceca6b 100644 --- a/src/com/aoleyun/os/Statistics/AppInformation.java +++ b/src/com/aoleyun/os/statistics/AppInformation.java @@ -1,4 +1,4 @@ -package com.aoleyun.os.Statistics; +package com.aoleyun.os.statistics; import android.app.usage.UsageStats; import android.content.Context; diff --git a/src/com/aoleyun/os/Statistics/StatisticsInfo.java b/src/com/aoleyun/os/statistics/StatisticsInfo.java similarity index 99% rename from src/com/aoleyun/os/Statistics/StatisticsInfo.java rename to src/com/aoleyun/os/statistics/StatisticsInfo.java index b244a99..47960dd 100644 --- a/src/com/aoleyun/os/Statistics/StatisticsInfo.java +++ b/src/com/aoleyun/os/statistics/StatisticsInfo.java @@ -1,4 +1,4 @@ -package com.aoleyun.os.Statistics; +package com.aoleyun.os.statistics; import android.annotation.TargetApi; import android.app.usage.UsageEvents; @@ -14,7 +14,7 @@ import java.util.Calendar; import java.util.HashMap; import java.util.List; -import static com.aoleyun.os.Statistics.AppInformation.bootTime; +import static com.aoleyun.os.statistics.AppInformation.bootTime; public class StatisticsInfo { diff --git a/src/com/aoleyun/os/touch/ItemClickHandler.java b/src/com/aoleyun/os/touch/ItemClickHandler.java index c5b2c67..14cf0da 100644 --- a/src/com/aoleyun/os/touch/ItemClickHandler.java +++ b/src/com/aoleyun/os/touch/ItemClickHandler.java @@ -47,20 +47,20 @@ import com.aoleyun.os.ItemInfo; import com.aoleyun.os.Launcher; import com.aoleyun.os.LauncherAppWidgetInfo; import com.aoleyun.os.LauncherAppWidgetProviderInfo; -import com.aoleyun.os.TTUtils.CustomDialog; -import com.aoleyun.os.TTUtils.ToastUtil; -import com.aoleyun.os.base.MyApplication; +import com.aoleyun.os.uiuiutils.CustomDialog; +import com.aoleyun.os.uiuiutils.ToastUtil; +import com.aoleyun.os.base.BaseApplication; import com.aoleyun.os.PromiseAppInfo; import com.aoleyun.os.R; -import com.aoleyun.os.Statistics.AppInformation; -import com.aoleyun.os.Statistics.StatisticsInfo; -import com.aoleyun.os.TTUtils.Utils; +import com.aoleyun.os.statistics.AppInformation; +import com.aoleyun.os.statistics.StatisticsInfo; +import com.aoleyun.os.uiuiutils.Utils; import com.aoleyun.os.WorkspaceItemInfo; import com.aoleyun.os.compat.AppWidgetManagerCompat; import com.aoleyun.os.folder.Folder; import com.aoleyun.os.folder.FolderIcon; -import com.aoleyun.os.network.AppPasswdBean; -import com.aoleyun.os.network.BaseResponse; +import com.aoleyun.os.network.bean.AppPasswdBean; +import com.aoleyun.os.network.bean.BaseResponse; import com.aoleyun.os.network.HTTPInterface; import com.aoleyun.os.network.NetworkManager; import com.aoleyun.os.network.api.AddAppLog; @@ -128,8 +128,7 @@ public class ItemClickHandler { Log.e("onClick", "onClick: " + ApplicationLock); Type type = new TypeToken>() { }.getType(); - Gson gson = new Gson(); - List appPasswdBeans = gson.fromJson(ApplicationLock, type); + List appPasswdBeans = new Gson().fromJson(ApplicationLock, type); String packageName = ((WorkspaceItemInfo) tag).getTargetComponent().getPackageName(); Log.e("ItemClickHandler", "onClick: " + packageName); if (appPasswdBeans == null) { @@ -139,7 +138,6 @@ public class ItemClickHandler { for (AppPasswdBean bean : appPasswdBeans) { hashMap.put(bean.getApp_package(), bean.getPassword()); } - if (hashMap.get(packageName) != null) { CustomDialog dialog = new CustomDialog(v.getContext()); dialog.setTitle("请输入密码"); @@ -168,35 +166,12 @@ public class ItemClickHandler { onClickAppShortcut(v, (WorkspaceItemInfo) tag, launcher, sourceContainer); } } - -// Log.e("ItemClickHandler", "onClick: " + packageName); -// if (cameraClosed(v.getContext(), packageName)) { -// return; -// } // onClickAppShortcut(v, (WorkspaceItemInfo) tag, launcher, sourceContainer); - AppInformation app = null; - try { - app = getInfoFromPackageName(packageName); - } catch (Exception e) { - Log.e("onClick", e.getMessage()); - } -// if (app != null) { -// Log.e("fht", "运行时间: " + DateUtils.formatElapsedTime(app.getUsedTimebyDay() / 1000)); -// Log.e("fht", "运行时间: " + app.getUsedTimebyDay() / 1000); -// TimeUtils.getInstance().setTime(app.getUsedTimebyDay() / 1000); -// -// } else { -// Log.e("fht", "首次运行:" + "包名:" + packageName); -// TimeUtils.getInstance().setTime(0); -// } -// if (!APKUtils.isSystemApp(v.getContext(), packageName) && !Arrays.asList(packages).contains(packageName)) { -// HTTPInterface.sendTimeLog(handler, userInfo, ((ShortcutInfo) tag).title.toString(), 1, 0); -// SendOpenApp(packageName); -// } + //写入正在运行的app的包名和时间 TimeUtils.getInstance().setAppPackageName(packageName); TimeUtils.getInstance().setStartTime(System.currentTimeMillis()); - HTTPInterface.SendRunningApp(MyApplication.getInstance().getApplicationContext()); + HTTPInterface.sendRunningApp(BaseApplication.getContext()); } else if (tag instanceof FolderInfo) { if (v instanceof FolderIcon) { onClickFolderIcon(v); @@ -235,13 +210,12 @@ public class ItemClickHandler { "com.android.uiuios", "com.easyold.uiuios", "com.jiaoguanyi.store" - }; public static AppInformation getInfoFromPackageName(String packageName) { List list; AppInformation app = null; - StatisticsInfo statisticsInfo = new StatisticsInfo(MyApplication.getInstance().getApplicationContext()); + StatisticsInfo statisticsInfo = new StatisticsInfo(BaseApplication.getInstance().getApplicationContext()); list = statisticsInfo.getShowList(); for (AppInformation appInformation : list) { String name = appInformation.getPackageName(); @@ -252,57 +226,6 @@ public class ItemClickHandler { return app; } - private static void SendOpenApp(String packageName) { - PackageManager pm = MyApplication.getInstance().getPackageManager(); - PackageInfo appInfo = null; - try { - appInfo = pm.getPackageInfo(packageName, 0); - } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); - } - if (null != appInfo) { - long appVersionCode; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - appVersionCode = appInfo.getLongVersionCode(); - } else { - appVersionCode = appInfo.versionCode; - } - AddAppLog appLog = NetworkManager.getInstance().getapplogControl(); - String sn = Utils.getSerial(); - appLog.addLog(sn, packageName, appVersionCode, System.currentTimeMillis() / 1000, 1) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - Log.e("SendOpenApp", "onSubscribe: "); - } - - @Override - public void onNext(BaseResponse baseResponse) { - int code = baseResponse.code; - if (code == 200) { - Log.e("SendOpenApp", "onNext: " + code + baseResponse.data); - } else { - Log.e("SendOpenApp", "onNext: " + code + baseResponse.msg); - } - } - - @Override - public void onError(Throwable e) { - Log.e("SendOpenApp", "onError: " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.e("SendOpenApp", "onComplete: "); - } - }); - } - - } - - /** * Event handler for a folder icon click. * diff --git a/src/com/aoleyun/os/TTUtils/APKUtils.java b/src/com/aoleyun/os/uiuiutils/APKUtils.java similarity index 99% rename from src/com/aoleyun/os/TTUtils/APKUtils.java rename to src/com/aoleyun/os/uiuiutils/APKUtils.java index b12756a..6a3bc13 100644 --- a/src/com/aoleyun/os/TTUtils/APKUtils.java +++ b/src/com/aoleyun/os/uiuiutils/APKUtils.java @@ -1,4 +1,4 @@ -package com.aoleyun.os.TTUtils; +package com.aoleyun.os.uiuiutils; import android.app.PendingIntent; import android.content.ComponentName; diff --git a/src/com/aoleyun/os/TTUtils/BitmapUtils.java b/src/com/aoleyun/os/uiuiutils/BitmapUtils.java similarity index 99% rename from src/com/aoleyun/os/TTUtils/BitmapUtils.java rename to src/com/aoleyun/os/uiuiutils/BitmapUtils.java index 2f5fe82..3c7b4ad 100644 --- a/src/com/aoleyun/os/TTUtils/BitmapUtils.java +++ b/src/com/aoleyun/os/uiuiutils/BitmapUtils.java @@ -1,4 +1,4 @@ -package com.aoleyun.os.TTUtils; +package com.aoleyun.os.uiuiutils; import android.content.Context; import android.graphics.Bitmap; diff --git a/src/com/aoleyun/os/TTUtils/CmdUtil.java b/src/com/aoleyun/os/uiuiutils/CmdUtil.java similarity index 98% rename from src/com/aoleyun/os/TTUtils/CmdUtil.java rename to src/com/aoleyun/os/uiuiutils/CmdUtil.java index ab55788..8aa938b 100644 --- a/src/com/aoleyun/os/TTUtils/CmdUtil.java +++ b/src/com/aoleyun/os/uiuiutils/CmdUtil.java @@ -1,4 +1,4 @@ -package com.aoleyun.os.TTUtils; +package com.aoleyun.os.uiuiutils; import android.text.TextUtils; import android.util.Log; diff --git a/src/com/aoleyun/os/TTUtils/CustomDialog.java b/src/com/aoleyun/os/uiuiutils/CustomDialog.java similarity index 99% rename from src/com/aoleyun/os/TTUtils/CustomDialog.java rename to src/com/aoleyun/os/uiuiutils/CustomDialog.java index cbd0909..9613ba1 100644 --- a/src/com/aoleyun/os/TTUtils/CustomDialog.java +++ b/src/com/aoleyun/os/uiuiutils/CustomDialog.java @@ -1,4 +1,4 @@ -package com.aoleyun.os.TTUtils; +package com.aoleyun.os.uiuiutils; import android.content.Context; diff --git a/src/com/aoleyun/os/TTUtils/DateUtils.java b/src/com/aoleyun/os/uiuiutils/DateUtils.java similarity index 98% rename from src/com/aoleyun/os/TTUtils/DateUtils.java rename to src/com/aoleyun/os/uiuiutils/DateUtils.java index e76d579..3e2fc51 100644 --- a/src/com/aoleyun/os/TTUtils/DateUtils.java +++ b/src/com/aoleyun/os/uiuiutils/DateUtils.java @@ -1,4 +1,4 @@ -package com.aoleyun.os.TTUtils; +package com.aoleyun.os.uiuiutils; import java.text.SimpleDateFormat; import java.util.Calendar; diff --git a/src/com/aoleyun/os/uiuiutils/JGYUtils.java b/src/com/aoleyun/os/uiuiutils/JGYUtils.java index e8e701e..0f0e71a 100644 --- a/src/com/aoleyun/os/uiuiutils/JGYUtils.java +++ b/src/com/aoleyun/os/uiuiutils/JGYUtils.java @@ -1,14 +1,20 @@ package com.aoleyun.os.uiuiutils; import android.annotation.SuppressLint; +import android.content.ContentResolver; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; +import android.provider.Settings; +import android.text.TextUtils; import android.util.Log; import com.aoleyun.os.BuildConfig; +import com.aoleyun.os.model.LoaderTask; import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.HashSet; public class JGYUtils { @@ -17,6 +23,7 @@ public class JGYUtils { @SuppressLint("StaticFieldLeak") private static JGYUtils sInstance; private Context mContext; + private ContentResolver mResolver; public static int MTKPlatform = 1; public static int ZhanruiPlatform = 2; public static int UnknowPlatform = 0; @@ -25,7 +32,11 @@ public class JGYUtils { private JGYUtils(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } this.mContext = context; + this.mResolver = context.getContentResolver(); } public static void init(Context context) { @@ -159,5 +170,15 @@ public class JGYUtils { return value; } } + + + public boolean isEnforceApp(String pkg) { + String appString = Settings.System.getString(mResolver, "qch_force_app"); + if (TextUtils.isEmpty(appString)) return false; + Log.e("isEnforceApp", "appString: " + appString); + HashSet appSet = new HashSet<>(Arrays.asList(appString.split(","))); + appSet.addAll(LoaderTask.showApp); + return appSet.contains(pkg); + } } diff --git a/src/com/aoleyun/os/uiuiutils/TimeUtils.java b/src/com/aoleyun/os/uiuiutils/TimeUtils.java index 8a397a9..8a8c143 100644 --- a/src/com/aoleyun/os/uiuiutils/TimeUtils.java +++ b/src/com/aoleyun/os/uiuiutils/TimeUtils.java @@ -4,29 +4,27 @@ import android.annotation.SuppressLint; import android.content.Context; import android.util.Log; -import com.aoleyun.os.TTUtils.APKUtils; -import com.aoleyun.os.network.BaseResponse; -import com.aoleyun.os.network.NetworkManager; -import com.google.gson.JsonObject; - +import java.io.Serializable; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; - public class TimeUtils { @SuppressLint("StaticFieldLeak") private static TimeUtils sInstance; private Context mContext; + private AppUsageRecord mAppUsageRecord; private SimpleDateFormat ruleSDF = new SimpleDateFormat("HH:mm:ss"); private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private String TAG = TimeUtils.class.getSimpleName(); private TimeUtils(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } this.mContext = context; + mAppUsageRecord = new AppUsageRecord(); } public static void init(Context context) { @@ -45,32 +43,43 @@ public class TimeUtils { private static String normalStartTime = "8:00:00"; private static String unusualStartTime = "22:00:00"; - private String appPackageName; - private long endTime = 0; - private long startTime = 0; + + class AppUsageRecord implements Serializable { + private static final long serialVersionUID = 7368756182558952397L; + + String pkg; + long startTime; + long endTime; + } public void setAppPackageName(String name) { - this.appPackageName = name; + mAppUsageRecord.pkg = name; } public String getAppPackageName() { - return appPackageName; + return mAppUsageRecord.pkg; } public void setStartTime(long time) { - this.startTime = time; + mAppUsageRecord.startTime = time; } public long getStartTime() { - return startTime; + return mAppUsageRecord.startTime; } public void setEndTime(long time) { - this.endTime = time; + mAppUsageRecord.endTime = time; } public long getEndTime() { - return endTime; + return mAppUsageRecord.endTime; + } + + public void clear() { + mAppUsageRecord.pkg = ""; + mAppUsageRecord.startTime = 0; + mAppUsageRecord.endTime = 0; } private static final long DAY_TIME = 1000 * 60 * 60 * 24; diff --git a/src/com/aoleyun/os/TTUtils/ToastUtil.java b/src/com/aoleyun/os/uiuiutils/ToastUtil.java similarity index 97% rename from src/com/aoleyun/os/TTUtils/ToastUtil.java rename to src/com/aoleyun/os/uiuiutils/ToastUtil.java index 6d388e0..003ae02 100644 --- a/src/com/aoleyun/os/TTUtils/ToastUtil.java +++ b/src/com/aoleyun/os/uiuiutils/ToastUtil.java @@ -1,4 +1,4 @@ -package com.aoleyun.os.TTUtils; +package com.aoleyun.os.uiuiutils; import android.annotation.SuppressLint; import android.content.Context; @@ -12,7 +12,6 @@ import android.widget.Toast; import com.aoleyun.os.BuildConfig; import com.aoleyun.os.R; -import com.aoleyun.os.uiuiutils.JGYUtils; import com.blankj.utilcode.util.ColorUtils; import com.blankj.utilcode.util.ToastUtils; diff --git a/src/com/aoleyun/os/TTUtils/Utils.java b/src/com/aoleyun/os/uiuiutils/Utils.java similarity index 99% rename from src/com/aoleyun/os/TTUtils/Utils.java rename to src/com/aoleyun/os/uiuiutils/Utils.java index a588b1a..c35baeb 100644 --- a/src/com/aoleyun/os/TTUtils/Utils.java +++ b/src/com/aoleyun/os/uiuiutils/Utils.java @@ -1,4 +1,4 @@ -package com.aoleyun.os.TTUtils; +package com.aoleyun.os.uiuiutils; import android.annotation.SuppressLint; import android.app.ActivityManager;