diff --git a/app/build.gradle b/app/build.gradle index 65803d8..b2db606 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.xxpatx.os" minSdkVersion 24 targetSdkVersion 29 - versionCode 1022 - versionName "1.2.1" + versionCode 1025 + versionName "1.2.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 599cd28..2131752 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -217,11 +217,26 @@ android:name=".activity.alarm.edit.AlarmEditActivity" android:launchMode="singleTask" android:screenOrientation="portrait" /> + + + android:screenOrientation="portrait" + android:theme="@style/activity_styles_full" /> + { private static final String TAG = "AddContactActivity"; @@ -114,7 +105,7 @@ public class AddContactActivity extends BaseMvvmActivity implements NetworkUtils.OnNetworkStatusChangedListener, NotificationService.NotificationListener { @@ -119,6 +122,7 @@ public class MainActivity extends BaseMvvmActivity 0) { + Date date = new Date(System.currentTimeMillis()); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String date_today = simpleDateFormat.format(date); + for (cs.moveToFirst(); (!cs.isAfterLast()) && i < num; cs.moveToNext(), i++) { + String callName = cs.getString(0); //名称 + String callNumber = cs.getString(1); //号码 + //如果名字为空,在通讯录查询一次有没有对应联系人 + if (callName == null || callName.equals("")) { + String[] cols = {ContactsContract.PhoneLookup.DISPLAY_NAME}; + //设置查询条件 + String selection = ContactsContract.CommonDataKinds.Phone.NUMBER + "='" + callNumber + "'"; + Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, + cols, selection, null, null); + int nameFieldColumnIndex = cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME); + if (cursor.getCount() > 0) { + cursor.moveToFirst(); + callName = cursor.getString(nameFieldColumnIndex); + } + cursor.close(); + } + //通话类型 + int callType = Integer.parseInt(cs.getString(2)); + String callTypeStr = ""; + switch (callType) { + case CallLog.Calls.INCOMING_TYPE: + callTypeStr = "CALLIN"; + break; + case CallLog.Calls.OUTGOING_TYPE: + callTypeStr = "CALLOUT"; + break; + case CallLog.Calls.MISSED_TYPE: + callTypeStr = "CAllMISS"; + break; + default: + //其他类型的,例如新增号码等记录不算进通话记录里,直接跳过 + Log.i("ssss", "" + callType); + i--; + continue; + } + //拨打时间 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date callDate = new Date(Long.parseLong(cs.getString(3))); + String callDateStr = sdf.format(callDate); + if (callDateStr.equals(date_today)) { //判断是否为今天 + sdf = new SimpleDateFormat("HH:mm"); + callDateStr = sdf.format(callDate); + } else if (date_today.contains(callDateStr.substring(0, 7))) { //判断是否为当月 + sdf = new SimpleDateFormat("dd"); + int callDay = Integer.valueOf(sdf.format(callDate)); + + int day = Integer.valueOf(sdf.format(date)); + if (day - callDay == 1) { + callDateStr = "昨天"; + } else { + sdf = new SimpleDateFormat("MM-dd"); + callDateStr = sdf.format(callDate); + } + } else if (date_today.contains(callDateStr.substring(0, 4))) { //判断是否为当年 + sdf = new SimpleDateFormat("MM-dd"); + callDateStr = sdf.format(callDate); + } + + //通话时长 + int callDuration = Integer.parseInt(cs.getString(4)); + int min = callDuration / 60; + int sec = callDuration % 60; + String callDurationStr = ""; + if (sec > 0) { + if (min > 0) { + callDurationStr = min + "分" + sec + "秒"; + } else { + callDurationStr = sec + "秒"; + } + } + + /** + * callName 名字 + * callNumber 号码 + * callTypeStr 通话类型 + * callDateStr 通话日期 + * callDurationStr 通话时长 + * 请在此处执行相关UI或存储操作,之后会查询下一条通话记录 + */ + Log.i("Msg", "callName" + callName); + Log.i("Msg", "callNumber" + callNumber); + Log.i("Msg", "callTypeStr" + callTypeStr); + Log.i("Msg", "callDateStr" + callDateStr); + Log.i("Msg", "callDurationStr" + callDurationStr); + } + } + } + @Override public void initData() { mViewModel.getDesktopIconData().observe(this, new Observer>() { @@ -716,6 +836,7 @@ public class MainActivity extends BaseMvvmActivity subscriptionInfos = subscriptionManager.getActiveSubscriptionInfoList(); - List stringList =new ArrayList<>(); + List stringList = new ArrayList<>(); for (SubscriptionInfo subscriptionInfo : subscriptionInfos) { Log.e(TAG, "initData: id = " + subscriptionInfo.getSubscriptionId()); Log.e(TAG, "initData: mCardString = " + subscriptionInfo.getCardString()); @@ -98,4 +112,14 @@ public class SelectNumberActivity extends BaseMvvmActivity call(phone)); + holder.cl_info.setOnClickListener(view -> call(phone)); + holder.iv_remove.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - String queryString = "number=" + recordsInfo.getNumber(); try { - mContext.getContentResolver().delete(CallLog.Calls.CONTENT_URI, queryString, null); + mContext.getContentResolver().delete(CallLog.Calls.CONTENT_URI, CallLog.Calls._ID + "=?", new String[]{String.valueOf(recordsInfo.getId())}); mRecordsInfoList.remove(position); notifyDataSetChanged(); } catch (Exception e) { @@ -120,6 +103,24 @@ public class CallRecordAdapter extends RecyclerView.Adapter { private static final String TAG = "DailyAppAdapter"; @@ -95,6 +91,11 @@ public class DailyAppAdapter extends RecyclerView.Adapter mDockApps; @@ -91,7 +95,16 @@ public class DockAppGridAdapter extends BaseAdapter { } } }); - int size = NotificationService.getNotificationLength(pkg); + int size; + switch (pkg) { + case "com.android.dialer": + case "xxpatx.os.dialer": + size = readMissCall(); + Log.e(TAG, "getView: readMissCall = " + size); + break; + default: + size = NotificationService.getNotificationLength(pkg); + } if (size == 0) { holder.bg.setVisibility(View.GONE); } else if (size < 99) { @@ -105,6 +118,20 @@ public class DockAppGridAdapter extends BaseAdapter { return convertView; } + private int readMissCall() { + int result = 0; + Cursor cursor = mContext.getContentResolver().query(CallLog.Calls.CONTENT_URI, + new String[]{CallLog.Calls._ID, CallLog.Calls.TYPE, CallLog.Calls.IS_READ}, + " " + CallLog.Calls.TYPE + "=? and " + CallLog.Calls.IS_READ + "=?", + new String[]{String.valueOf(CallLog.Calls.MISSED_TYPE), "0"}, + CallLog.Calls.DEFAULT_SORT_ORDER); + if (cursor != null) { + result = cursor.getCount(); + cursor.close(); + } + return result; + } + static class ViewHolder { ConstraintLayout root; ImageView iv_icon; diff --git a/app/src/main/java/com/xxpatx/os/adapter/PhoneAdapter.java b/app/src/main/java/com/xxpatx/os/adapter/PhoneAdapter.java index fd9c9ab..f39384e 100644 --- a/app/src/main/java/com/xxpatx/os/adapter/PhoneAdapter.java +++ b/app/src/main/java/com/xxpatx/os/adapter/PhoneAdapter.java @@ -90,14 +90,13 @@ public class PhoneAdapter extends RecyclerView.Adapter { public class Holder extends RecyclerView.ViewHolder { ConstraintLayout root; - TextView tv_sim, tv_number; + TextView tv_number; ImageView iv_card; public Holder(@NonNull View itemView) { super(itemView); root = itemView.findViewById(R.id.root); iv_card = itemView.findViewById(R.id.iv_card); - tv_sim = itemView.findViewById(R.id.tv_sim); tv_number = itemView.findViewById(R.id.tv_number); } } diff --git a/app/src/main/java/com/xxpatx/os/bean/RecordsInfo.java b/app/src/main/java/com/xxpatx/os/bean/RecordsInfo.java index 7ccf349..1a3cde7 100644 --- a/app/src/main/java/com/xxpatx/os/bean/RecordsInfo.java +++ b/app/src/main/java/com/xxpatx/os/bean/RecordsInfo.java @@ -10,12 +10,21 @@ import java.io.Serializable; public class RecordsInfo implements Serializable { private static final long serialVersionUID = -8677336093725878416L; + String id; String name; String number; long date; int duration; int type; + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + public String getName() { return name; } diff --git a/app/src/main/java/com/xxpatx/os/bean/SystemSettings.java b/app/src/main/java/com/xxpatx/os/bean/SystemSettings.java index 793fbba..3af586e 100644 --- a/app/src/main/java/com/xxpatx/os/bean/SystemSettings.java +++ b/app/src/main/java/com/xxpatx/os/bean/SystemSettings.java @@ -5,7 +5,6 @@ import com.google.gson.Gson; import com.google.gson.JsonParser; import java.io.Serializable; -import java.util.List; public class SystemSettings implements Serializable { @@ -37,7 +36,7 @@ public class SystemSettings implements Serializable { int qch_restore; int setting_browserInput; int dev_mode; - List setting_sos; + String setting_sos; String setting_volume; String setting_luminance; String setting_typeface; @@ -55,11 +54,22 @@ public class SystemSettings implements Serializable { int setting_location; int setting_charge; int setting_other_appInstaller; - int is_health; int is_shopping; int is_info; - + int is_quickapp;//快捷应用开关 0关1开 + String quickapp; //快捷应用包名 + int is_seek;//查找模式开关 0关1开 + int is_lose;//丢失模式开关 0关1开 + String lose_str; //丢失模式描述文字 + int last_screen; + int hover_home; + int sos_ctrl; + int alarm_clock_ctrl; + int app_lock_ctrl; + int exit_ctrl; + int connect_page_ctrl; + int connect_edit_ctrl; public int getQch_restore() { return qch_restore; @@ -262,11 +272,11 @@ public class SystemSettings implements Serializable { this.setting_hotspot = setting_hotspot; } - public List getSetting_sos() { + public String getSetting_sos() { return setting_sos; } - public void setSetting_sos(List setting_sos) { + public void setSetting_sos(String setting_sos) { this.setting_sos = setting_sos; } @@ -422,6 +432,110 @@ public class SystemSettings implements Serializable { this.is_info = is_info; } + public int getIs_quickapp() { + return is_quickapp; + } + + public void setIs_quickapp(int is_quickapp) { + this.is_quickapp = is_quickapp; + } + + public String getQuickapp() { + return quickapp; + } + + public void setQuickapp(String quickapp) { + this.quickapp = quickapp; + } + + public int getIs_seek() { + return is_seek; + } + + public void setIs_seek(int is_seek) { + this.is_seek = is_seek; + } + + public int getIs_lose() { + return is_lose; + } + + public void setIs_lose(int is_lose) { + this.is_lose = is_lose; + } + + public String getLose_str() { + return lose_str; + } + + public void setLose_str(String lose_str) { + this.lose_str = lose_str; + } + + public int getLast_screen() { + return last_screen; + } + + public void setLast_screen(int last_screen) { + this.last_screen = last_screen; + } + + public int getHover_home() { + return hover_home; + } + + public void setHover_home(int hover_home) { + this.hover_home = hover_home; + } + + public int getSos_ctrl() { + return sos_ctrl; + } + + public void setSos_ctrl(int sos_ctrl) { + this.sos_ctrl = sos_ctrl; + } + + public int getAlarm_clock_ctrl() { + return alarm_clock_ctrl; + } + + public void setAlarm_clock_ctrl(int alarm_clock_ctrl) { + this.alarm_clock_ctrl = alarm_clock_ctrl; + } + + public int getApp_lock_ctrl() { + return app_lock_ctrl; + } + + public void setApp_lock_ctrl(int app_lock_ctrl) { + this.app_lock_ctrl = app_lock_ctrl; + } + + public int getExit_ctrl() { + return exit_ctrl; + } + + public void setExit_ctrl(int exit_ctrl) { + this.exit_ctrl = exit_ctrl; + } + + public int getConnect_page_ctrl() { + return connect_page_ctrl; + } + + public void setConnect_page_ctrl(int connect_page_ctrl) { + this.connect_page_ctrl = connect_page_ctrl; + } + + public int getConnect_edit_ctrl() { + return connect_edit_ctrl; + } + + public void setConnect_edit_ctrl(int connect_edit_ctrl) { + this.connect_edit_ctrl = connect_edit_ctrl; + } + @Override public String toString() { return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString(); diff --git a/app/src/main/java/com/xxpatx/os/config/CommonConfig.java b/app/src/main/java/com/xxpatx/os/config/CommonConfig.java index fed9507..f55d8e3 100644 --- a/app/src/main/java/com/xxpatx/os/config/CommonConfig.java +++ b/app/src/main/java/com/xxpatx/os/config/CommonConfig.java @@ -81,9 +81,11 @@ public class CommonConfig { public static final String VOICE_BROADCAST = "voice_broadcast_key"; /*微信语音自动接听*/ public static final String WECHAT_CALL_AUTO_ACCEPT = "wechat_call_auto_accept"; + + /*本地设置的*/ /*悬浮窗*/ - public static final String FLOAT_WINDOW = "FloatWindowEnable"; - public static final boolean FLOAT_WINDOW_STATU = false; +// public static final String FLOAT_WINDOW = "FloatWindowEnable"; +// public static final boolean FLOAT_WINDOW_STATU = false; /*禁用音量键*/ public static final String DISABLE_VOLUME_KEY = "disable_volume_key"; /*修改联系人禁用*/ @@ -91,6 +93,20 @@ public class CommonConfig { /*禁用闹钟修改*/ public static final String DISABLE_CLOCK_MODIFY = "disable_clock_modify_key"; + + /*后台设置的*/ + /*主页按钮开关*/ + public static final String HOVER_HOME = "hover_home"; + /*默认状态*/ + public static final int HOVER_HOME_STATUS = 0; + /*禁用SOS*/ + public static final String DISABLE_SOS = "sos_ctrl"; + /*禁用闹钟修改*/ + public static final String ALARM_CLOCK_CTRL = "alarm_clock_ctrl"; + /*应用锁定开关*/ + public static final String APP_LOCK_CTRL = "app_lock_ctrl"; + + public final static String ACTION_STATUS_BAR_STATE = "xiaoxintong_statusBar_state"; /*显示状态栏*/ public final static String ACTION_SHOW_STATUS_BAR = "xiaoxintong_show_statusBar"; @@ -100,4 +116,6 @@ public class CommonConfig { public static final String AMAP_LOCATION_MAP_BEAN = "AMapLocation_MapBean_key"; public static final String AMAP_LOCATION_DISTRICT = "AMapLocationMapBean_key"; + + } diff --git a/app/src/main/java/com/xxpatx/os/view/CustomContent.java b/app/src/main/java/com/xxpatx/os/custom/CustomContent.java similarity index 98% rename from app/src/main/java/com/xxpatx/os/view/CustomContent.java rename to app/src/main/java/com/xxpatx/os/custom/CustomContent.java index 4ac65fb..ff1b5f3 100644 --- a/app/src/main/java/com/xxpatx/os/view/CustomContent.java +++ b/app/src/main/java/com/xxpatx/os/custom/CustomContent.java @@ -1,4 +1,4 @@ -package com.xxpatx.os.view; +package com.xxpatx.os.custom; import android.content.Context; import android.util.AttributeSet; diff --git a/app/src/main/java/com/xxpatx/os/view/CustomContentCallbacks.java b/app/src/main/java/com/xxpatx/os/custom/CustomContentCallbacks.java similarity index 95% rename from app/src/main/java/com/xxpatx/os/view/CustomContentCallbacks.java rename to app/src/main/java/com/xxpatx/os/custom/CustomContentCallbacks.java index 6e5ef0d..1b255d7 100644 --- a/app/src/main/java/com/xxpatx/os/view/CustomContentCallbacks.java +++ b/app/src/main/java/com/xxpatx/os/custom/CustomContentCallbacks.java @@ -1,4 +1,4 @@ -package com.xxpatx.os.view; +package com.xxpatx.os.custom; // add by codemx.cn ---- 20190712 ---plus- start diff --git a/app/src/main/java/com/xxpatx/os/base/GlideEngine.java b/app/src/main/java/com/xxpatx/os/custom/GlideEngine.java similarity index 99% rename from app/src/main/java/com/xxpatx/os/base/GlideEngine.java rename to app/src/main/java/com/xxpatx/os/custom/GlideEngine.java index 1b33bd1..c2a7659 100644 --- a/app/src/main/java/com/xxpatx/os/base/GlideEngine.java +++ b/app/src/main/java/com/xxpatx/os/custom/GlideEngine.java @@ -1,4 +1,4 @@ -package com.xxpatx.os.base; +package com.xxpatx.os.custom; import android.content.Context; import android.widget.ImageView; diff --git a/app/src/main/java/com/xxpatx/os/view/ImageViewAdapter.java b/app/src/main/java/com/xxpatx/os/custom/ImageViewAdapter.java similarity index 98% rename from app/src/main/java/com/xxpatx/os/view/ImageViewAdapter.java rename to app/src/main/java/com/xxpatx/os/custom/ImageViewAdapter.java index 4be3188..084b36e 100644 --- a/app/src/main/java/com/xxpatx/os/view/ImageViewAdapter.java +++ b/app/src/main/java/com/xxpatx/os/custom/ImageViewAdapter.java @@ -1,4 +1,4 @@ -package com.xxpatx.os.view; +package com.xxpatx.os.custom; import android.content.Context; import android.graphics.Bitmap; diff --git a/app/src/main/java/com/xxpatx/os/view/RecyclerItemDecoration.java b/app/src/main/java/com/xxpatx/os/custom/RecyclerItemDecoration.java similarity index 97% rename from app/src/main/java/com/xxpatx/os/view/RecyclerItemDecoration.java rename to app/src/main/java/com/xxpatx/os/custom/RecyclerItemDecoration.java index 53719f4..02dc523 100644 --- a/app/src/main/java/com/xxpatx/os/view/RecyclerItemDecoration.java +++ b/app/src/main/java/com/xxpatx/os/custom/RecyclerItemDecoration.java @@ -1,4 +1,4 @@ -package com.xxpatx.os.view; +package com.xxpatx.os.custom; import android.graphics.Rect; import android.view.View; diff --git a/app/src/main/java/com/xxpatx/os/view/RecyclerViewSpacesItemDecoration.java b/app/src/main/java/com/xxpatx/os/custom/RecyclerViewSpacesItemDecoration.java similarity index 97% rename from app/src/main/java/com/xxpatx/os/view/RecyclerViewSpacesItemDecoration.java rename to app/src/main/java/com/xxpatx/os/custom/RecyclerViewSpacesItemDecoration.java index 0face91..725607f 100644 --- a/app/src/main/java/com/xxpatx/os/view/RecyclerViewSpacesItemDecoration.java +++ b/app/src/main/java/com/xxpatx/os/custom/RecyclerViewSpacesItemDecoration.java @@ -1,4 +1,4 @@ -package com.xxpatx.os.view; +package com.xxpatx.os.custom; import android.graphics.Rect; import android.view.View; diff --git a/app/src/main/java/com/xxpatx/os/view/ViewPager2Adapter.java b/app/src/main/java/com/xxpatx/os/custom/ViewPager2Adapter.java similarity index 99% rename from app/src/main/java/com/xxpatx/os/view/ViewPager2Adapter.java rename to app/src/main/java/com/xxpatx/os/custom/ViewPager2Adapter.java index a025894..cd539c0 100644 --- a/app/src/main/java/com/xxpatx/os/view/ViewPager2Adapter.java +++ b/app/src/main/java/com/xxpatx/os/custom/ViewPager2Adapter.java @@ -1,4 +1,4 @@ -package com.xxpatx.os.view; +package com.xxpatx.os.custom; import android.util.SparseArray; diff --git a/app/src/main/java/com/xxpatx/os/fragment/app/AppListFragment.java b/app/src/main/java/com/xxpatx/os/fragment/app/AppListFragment.java index 13250c8..1402e06 100644 --- a/app/src/main/java/com/xxpatx/os/fragment/app/AppListFragment.java +++ b/app/src/main/java/com/xxpatx/os/fragment/app/AppListFragment.java @@ -27,8 +27,8 @@ import com.trello.rxlifecycle4.RxLifecycle; import com.trello.rxlifecycle4.android.FragmentEvent; import com.xxpatx.os.BuildConfig; import com.xxpatx.os.R; -import com.xxpatx.os.activity.screenlock.ScreenLockActivity; import com.xxpatx.os.activity.dailyapp.DailyAppActivity; +import com.xxpatx.os.activity.screenlock.ScreenLockActivity; import com.xxpatx.os.activity.service.ServiceActivity; import com.xxpatx.os.base.BaseFragment; import com.xxpatx.os.bean.BaseResponse; @@ -48,7 +48,6 @@ import com.xxpatx.os.utils.IconUtils; import com.xxpatx.os.view.MyGridLayout; import java.util.ArrayList; -import java.util.Arrays; import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; @@ -403,6 +402,11 @@ public class AppListFragment extends BaseFragment { } private void showHideDialog(DesktopIcon desktopIcon) { + int appLockCtrl = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.APP_LOCK_CTRL, 0); + if (appLockCtrl == 0) { + Toaster.showLong("已禁止桌面编辑"); + return; + } String label = desktopIcon.getTitle(); String pkg = desktopIcon.getPackage(); DailyAppDialog dailyAppDialog = new DailyAppDialog(mContext); diff --git a/app/src/main/java/com/xxpatx/os/fragment/home/HomeFragment.java b/app/src/main/java/com/xxpatx/os/fragment/home/HomeFragment.java index 4fc3bc3..80d6cb7 100644 --- a/app/src/main/java/com/xxpatx/os/fragment/home/HomeFragment.java +++ b/app/src/main/java/com/xxpatx/os/fragment/home/HomeFragment.java @@ -4,7 +4,6 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.hardware.camera2.CameraAccessException; import android.hardware.camera2.CameraManager; import android.os.Bundle; import android.os.Handler; @@ -26,20 +25,19 @@ import com.qweather.sdk.bean.weather.WeatherNowBean; import com.tencent.mmkv.MMKV; import com.xxpatx.os.BuildConfig; import com.xxpatx.os.R; +import com.xxpatx.os.activity.FlashlightActivity; +import com.xxpatx.os.activity.NetworkActivity; import com.xxpatx.os.activity.contact.AddWechatContactActivity; -import com.xxpatx.os.activity.emergency.EmergencyActivity; import com.xxpatx.os.activity.setting.SettingActivity; import com.xxpatx.os.activity.weather.WeatherActivity; import com.xxpatx.os.alarm.AlarmClockData; import com.xxpatx.os.alarm.AlarmUtils; import com.xxpatx.os.base.mvvm.fragment.BaseMvvmFragment; -import com.xxpatx.os.bean.Contact; import com.xxpatx.os.bean.DesktopIcon; import com.xxpatx.os.bean.MapBean; import com.xxpatx.os.config.CommonConfig; import com.xxpatx.os.databinding.FragmentHomeBinding; import com.xxpatx.os.dialog.SingleDialog; -import com.xxpatx.os.network.NetInterfaceManager; import com.xxpatx.os.push.PushManager; import com.xxpatx.os.utils.ApkUtils; import com.xxpatx.os.utils.DayUtils; @@ -378,37 +376,6 @@ public class HomeFragment extends BaseMvvmFragment contactList) { - - } - - @Override - public void setEmergencyContact(List emergencyContact) { - if (emergencyContact == null || emergencyContact.size() == 0) { - showNoData("温馨提示", "请在小程序上面设置紧急联系人"); - } else { - Intent intent = new Intent(mContext, EmergencyActivity.class); -// intent.putExtra("setting_sos", phone); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - mContext.startActivity(intent); - } - } - - @Override - public void setEmpty() { - showNoData("温馨提示", "请在小程序上面设置紧急联系人"); - } - - @Override - public void onComplete() { - - } - }); - } - private void showNoData(String title, String msg) { SingleDialog dialog = new SingleDialog(mContext); dialog.setTitle(title) @@ -501,24 +468,26 @@ public class HomeFragment extends BaseMvvmFragment list = new ArrayList<>(); while (cursor.moveToNext()) { + String id = cursor.getString(cursor.getColumnIndex(CallLog.Calls._ID)); String name = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME)); String number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER)); long dateLong = cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE)); @@ -86,6 +88,7 @@ public class RecordViewModel extends BaseViewModel defaultHiedApp = new HashSet() {{ this.add("om.android.fmradio");//收音机 - this.add("com.android.mms");//信息 +// this.add("com.android.mms");//信息 this.add("com.android.gallery3d"); this.add("com.android.documentsui"); this.add("com.android.calculator2"); diff --git a/app/src/main/java/com/xxpatx/os/network/NetInterfaceManager.java b/app/src/main/java/com/xxpatx/os/network/NetInterfaceManager.java index 868dcd8..8610665 100644 --- a/app/src/main/java/com/xxpatx/os/network/NetInterfaceManager.java +++ b/app/src/main/java/com/xxpatx/os/network/NetInterfaceManager.java @@ -68,9 +68,9 @@ import com.xxpatx.os.network.api.uiui.SnIsActivationApi; import com.xxpatx.os.network.api.uiui.UpdateAppIconApi; import com.xxpatx.os.network.api.uiui.UserInfoControl; import com.xxpatx.os.network.api.uiui.alarmclock.AlarmClockAddApi; -import com.xxpatx.os.network.api.uiui.alarmclock.AlarmClockGetApi; import com.xxpatx.os.network.api.uiui.alarmclock.AlarmClockDeleteApi; import com.xxpatx.os.network.api.uiui.alarmclock.AlarmClockEditApi; +import com.xxpatx.os.network.api.uiui.alarmclock.AlarmClockGetApi; import com.xxpatx.os.network.api.uiui.alarmclock.AlarmClockQueryApi; import com.xxpatx.os.network.api.uiui.alarmclock.AlarmClockUpdateApi; import com.xxpatx.os.network.api.uiui.app.RunNewApp; @@ -1203,18 +1203,7 @@ public class NetInterfaceManager { mMMKV.encode("is_health", systemSettings.getIs_health()); mMMKV.encode("is_shopping", systemSettings.getIs_shopping()); mMMKV.encode("is_info", systemSettings.getIs_info()); - List setting_sos = systemSettings.getSetting_sos(); - if (setting_sos == null || setting_sos.size() == 0) { - mCacheHelper.put(UrlAddress.GET_SETTINGS, ""); - if (callback != null) callback.setEmpty(); - } else { - List emergencyContact = setting_sos.stream().filter(contact -> contact.getIs_urgent() == 1).collect(Collectors.toList()); - mCacheHelper.put(UrlAddress.GET_SETTINGS, GsonUtils.toJSONString(setting_sos)); - if (callback != null) { - callback.setContact(setting_sos); - callback.setEmergencyContact(emergencyContact); - } - } + String s = systemSettings.getSetting_sos(); } else { mCacheHelper.put(UrlAddress.GET_SETTINGS, ""); if (callback != null) callback.setEmpty(); diff --git a/app/src/main/java/com/xxpatx/os/service/main/MainService.java b/app/src/main/java/com/xxpatx/os/service/main/MainService.java index e656fd0..043a781 100644 --- a/app/src/main/java/com/xxpatx/os/service/main/MainService.java +++ b/app/src/main/java/com/xxpatx/os/service/main/MainService.java @@ -153,12 +153,12 @@ public class MainService extends BaseRxService implements MainSContact.MainSView // ApkUtils.UninstallAPP(this, "com.joytv.live"); // ApkUtils.UninstallAPP(this, "com.tencent.android.qqdownloader"); - mFloatWindowEnable = mMMKV.decodeBool(CommonConfig.FLOAT_WINDOW, CommonConfig.FLOAT_WINDOW_STATU); + mFloatWindowEnable = Settings.Global.getInt(getContentResolver(), CommonConfig.HOVER_HOME, CommonConfig.HOVER_HOME_STATUS) == 1; mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); showPopupWindow(); - Aria.init(this); Aria.download(this).register(); + mPresenter = new MainSPresenter(this); mPresenter.attachView(this); mPresenter.setLifecycle(lifecycleSubject); @@ -532,8 +532,8 @@ public class MainService extends BaseRxService implements MainSContact.MainSView } } - public static final String ACTION_FLOAT_WINDOW_ON = "com.tt.float.window.on"; - public static final String ACTION_FLOAT_WINDOW_OFF = "com.tt.float.window.off"; + public static final String ACTION_FLOAT_WINDOW_ON = "com.xxpatx.os.float.window.on"; + public static final String ACTION_FLOAT_WINDOW_OFF = "com.xxpatx.os.float.window.off"; private WindowReceiver mWindowReceiver; @@ -557,12 +557,12 @@ public class MainService extends BaseRxService implements MainSContact.MainSView } switch (action) { case ACTION_FLOAT_WINDOW_ON: - mMMKV.encode(CommonConfig.FLOAT_WINDOW, true); +// Settings.Global.putInt(getContentResolver(), CommonConfig.HOVER_HOME, 1); mFloatWindowEnable = true; showPopupWindow(); break; case ACTION_FLOAT_WINDOW_OFF: - mMMKV.encode(CommonConfig.FLOAT_WINDOW, false); +// Settings.Global.putInt(getContentResolver(), CommonConfig.HOVER_HOME, 0); mFloatWindowEnable = false; if (mWindowManager != null && mBallView != null) { if (mBallView.isAttachedToWindow()) { @@ -638,7 +638,7 @@ public class MainService extends BaseRxService implements MainSContact.MainSView } private void killBackgroundApp() { - List pkgList = ApkUtils.queryFilterAppList(this); + List pkgList = ApkUtils.getRuningPackageList(this); for (String pkg : pkgList) { if (pkg.equalsIgnoreCase(BuildConfig.APPLICATION_ID) || "com.xxpatx.sn".equals(pkg) diff --git a/app/src/main/java/com/xxpatx/os/utils/ApkUtils.java b/app/src/main/java/com/xxpatx/os/utils/ApkUtils.java index f23fd84..cf4809b 100644 --- a/app/src/main/java/com/xxpatx/os/utils/ApkUtils.java +++ b/app/src/main/java/com/xxpatx/os/utils/ApkUtils.java @@ -1,5 +1,6 @@ package com.xxpatx.os.utils; +import android.app.ActivityManager; import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; @@ -51,6 +52,8 @@ import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Set; +import java.util.function.Function; +import java.util.function.Predicate; import java.util.stream.Collectors; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; @@ -386,12 +389,12 @@ public class ApkUtils { resolveInfos.add(resolveInfo); } } else { -// if ("com.xxpatx.sn".equals(pkg)) { -// resolveInfos.add(resolveInfo); -// } else { - Log.e(TAG, "getAppstoreAppInfo: pkgSet ! contains " + pkg); - AppStatusManager.getInstance().addHidedApp(pkg); -// } + if ("com.android.mms".equals(pkg)) { + resolveInfos.add(resolveInfo); + } else { + Log.e(TAG, "getAppstoreAppInfo: pkgSet ! contains " + pkg); + AppStatusManager.getInstance().addHidedApp(pkg); + } } } else { if (allPackages.contains(pkg) && !excludePackageName.contains(pkg)) { @@ -492,6 +495,34 @@ public class ApkUtils { return applicationInfos; } + public static List getRuningPackageList(Context context) { + ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); + List runningAppProcesses = activityManager.getRunningAppProcesses(); + Set map = runningAppProcesses.stream().map(new Function() { + @Override + public String apply(ActivityManager.RunningAppProcessInfo runningAppProcessInfo) { + String processName = runningAppProcessInfo.processName; + String[] split = processName.split(":"); + return split[0]; + } + }).collect(Collectors.toSet()); + map.remove("system"); + map.remove("android"); + map.remove("com.android.networkstack.process"); + map.remove("android.process.media"); + map.remove("com.android.dreams.basic"); + map.remove("com.android.musicfx"); + map.remove("say.whatever"); + Set filter = map.stream().filter(new Predicate() { + @Override + public boolean test(String s) { + return !ApkUtils.isSystemApp(context, s); + } + }).collect(Collectors.toSet()); + Log.e(TAG, "getRuningPackageList: " + filter); + return new ArrayList<>(filter); + } + public static PackageInfo getPackageInfo(Context context, String pkg) { PackageManager packageManager = context.getPackageManager(); PackageInfo packageInfo = null; diff --git a/app/src/main/java/com/xxpatx/os/utils/Utils.java b/app/src/main/java/com/xxpatx/os/utils/Utils.java index 1dc1f67..a554fe4 100644 --- a/app/src/main/java/com/xxpatx/os/utils/Utils.java +++ b/app/src/main/java/com/xxpatx/os/utils/Utils.java @@ -324,19 +324,19 @@ public class Utils { return result; } - public static boolean isMultiSim(Context context){ + public static boolean isMultiSim(Context context) { boolean result = false; TelecomManager telecomManager = (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE); - if(telecomManager != null){ + if (telecomManager != null) { List phoneAccountHandleList = telecomManager.getCallCapablePhoneAccounts(); result = phoneAccountHandleList.size() >= 2; } return result; } - public static void call(Context context, int id, String telNum){ + public static void call(Context context, int id, String telNum) { TelecomManager telecomManager = (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE); - if(telecomManager != null){ + if (telecomManager != null) { List phoneAccountHandleList = telecomManager.getCallCapablePhoneAccounts(); Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); @@ -346,4 +346,24 @@ public class Utils { } } + @SuppressLint("HardwareIds") + public static String getIMEI(Context context, int slotIndex) { + String imei; + TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + imei = tm.getImei(slotIndex); + } else { + imei = tm.getDeviceId(slotIndex); + } + if (TextUtils.isEmpty(imei)) { + return "暂无数据"; + } + return imei; + } + + public static String getEmid(Context context) { + TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + String meid = telephonyManager.getDeviceId(); + return meid; + } } diff --git a/app/src/main/res/drawable-hdpi/icon_flash_light_close.png b/app/src/main/res/drawable-hdpi/icon_flash_light_close.png new file mode 100644 index 0000000..a3f32fb Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_flash_light_close.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_flash_light_open.png b/app/src/main/res/drawable-hdpi/icon_flash_light_open.png new file mode 100644 index 0000000..3f1166e Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_flash_light_open.png differ diff --git a/app/src/main/res/drawable-hdpi/sim_card_1.png b/app/src/main/res/drawable-hdpi/sim_card_1.png index eca6ad8..f44a522 100644 Binary files a/app/src/main/res/drawable-hdpi/sim_card_1.png and b/app/src/main/res/drawable-hdpi/sim_card_1.png differ diff --git a/app/src/main/res/drawable-hdpi/sim_card_2.png b/app/src/main/res/drawable-hdpi/sim_card_2.png index 2215426..7d1b9f8 100644 Binary files a/app/src/main/res/drawable-hdpi/sim_card_2.png and b/app/src/main/res/drawable-hdpi/sim_card_2.png differ diff --git a/app/src/main/res/drawable/imei_button_bg.xml b/app/src/main/res/drawable/imei_button_bg.xml new file mode 100644 index 0000000..1881cf0 --- /dev/null +++ b/app/src/main/res/drawable/imei_button_bg.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/select_number_bg.xml b/app/src/main/res/drawable/select_number_bg.xml new file mode 100644 index 0000000..62baef8 --- /dev/null +++ b/app/src/main/res/drawable/select_number_bg.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_flashlight.xml b/app/src/main/res/layout/activity_flashlight.xml new file mode 100644 index 0000000..6b1463b --- /dev/null +++ b/app/src/main/res/layout/activity_flashlight.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_imei.xml b/app/src/main/res/layout/activity_imei.xml new file mode 100644 index 0000000..8d945bd --- /dev/null +++ b/app/src/main/res/layout/activity_imei.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_network.xml b/app/src/main/res/layout/activity_network.xml new file mode 100644 index 0000000..6e08dfb --- /dev/null +++ b/app/src/main/res/layout/activity_network.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_select_number.xml b/app/src/main/res/layout/activity_select_number.xml index e3fc401..7a1bf8b 100644 --- a/app/src/main/res/layout/activity_select_number.xml +++ b/app/src/main/res/layout/activity_select_number.xml @@ -6,21 +6,73 @@ + + android:layout_height="match_parent" + android:onClick="@{click::exit}"> - + app:layout_constraintStart_toStartOf="parent"> + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_call_record.xml b/app/src/main/res/layout/item_call_record.xml index afd17bc..64ee993 100644 --- a/app/src/main/res/layout/item_call_record.xml +++ b/app/src/main/res/layout/item_call_record.xml @@ -39,7 +39,7 @@ app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/layout/item_dock_app.xml b/app/src/main/res/layout/item_dock_app.xml index 8139acc..b6b6bea 100644 --- a/app/src/main/res/layout/item_dock_app.xml +++ b/app/src/main/res/layout/item_dock_app.xml @@ -15,7 +15,7 @@ @@ -36,8 +37,8 @@ android:id="@+id/bg" android:layout_width="wrap_content" android:layout_height="24dp" - android:layout_marginStart="56dp" - android:layout_marginBottom="56dp" + android:layout_marginStart="52dp" + android:layout_marginBottom="52dp" android:background="@drawable/badge_bg" android:gravity="center" android:minWidth="24dp" diff --git a/app/src/main/res/layout/item_phone.xml b/app/src/main/res/layout/item_phone.xml index 59aaa33..2923fd8 100644 --- a/app/src/main/res/layout/item_phone.xml +++ b/app/src/main/res/layout/item_phone.xml @@ -22,16 +22,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"> - + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index ea44673..d1734ea 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -48,6 +48,27 @@ true + +