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
+
+