From 196b93424a2e160fc095358803be077be5f8a9c7 Mon Sep 17 00:00:00 2001 From: tongtongstudio Date: Mon, 30 Sep 2024 10:27:31 +0800 Subject: [PATCH] =?UTF-8?q?version:1.2.7=20fix:=20update:=E4=BC=98?= =?UTF-8?q?=E5=8C=96sim=E5=8D=A1=E8=81=94=E7=B3=BB=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 8 +- .../contact/AddWechatContactActivity.java | 12 +- .../activity/dailyapp/DailyAppActivity.java | 3 +- .../activity/dailyapp/DailyAppViewModel.java | 6 +- .../xxpatx/os/activity/main/MainActivity.java | 8 +- .../os/activity/main/MainViewModel.java | 177 +++--------------- .../main/java/com/xxpatx/os/bean/Contact.java | 6 +- .../com/xxpatx/os/config/CommonConfig.java | 1 + .../com/xxpatx/os/db/ContactCacheUtils.java | 2 +- .../xxpatx/os/dialog/EditContactDialog.java | 2 + .../os/fragment/contact/ContactFragment.java | 2 +- .../os/fragment/contact/ContactViewModel.java | 2 +- .../os/fragment/home/HomeViewModel.java | 2 +- .../phone/contact/ContactFragment.java | 105 +++++++++-- .../phone/contact/ContactViewModel.java | 144 +++++++++++++- .../xxpatx/os/manager/AppStatusManager.java | 14 +- .../os/network/NetInterfaceManager.java | 2 +- .../api/uiui/contact/MailListDeleteApi.java | 2 +- .../os/service/WeAccessibilityService.java | 44 ++++- .../java/com/xxpatx/os/utils/ApkUtils.java | 1 + 20 files changed, 345 insertions(+), 198 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b2db606..f1aa4c5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.xxpatx.os" minSdkVersion 24 targetSdkVersion 29 - versionCode 1025 - versionName "1.2.4" + versionCode 1028 + versionName "1.2.7" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -75,9 +75,9 @@ android { versionNameSuffix "-debug" //Zipalign优化 zipAlignEnabled true - shrinkResources true +// shrinkResources true //混淆 - minifyEnabled true + minifyEnabled false //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,后一个文件是自己的定义混淆文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //签名 diff --git a/app/src/main/java/com/xxpatx/os/activity/contact/AddWechatContactActivity.java b/app/src/main/java/com/xxpatx/os/activity/contact/AddWechatContactActivity.java index 11a27be..0f67a61 100644 --- a/app/src/main/java/com/xxpatx/os/activity/contact/AddWechatContactActivity.java +++ b/app/src/main/java/com/xxpatx/os/activity/contact/AddWechatContactActivity.java @@ -192,10 +192,14 @@ public class AddWechatContactActivity extends BaseMvvmActivity>() { + mViewModel.mDailyAppData.observe(this, new Observer>() { @Override public void onChanged(List dailyAppBeans) { mDailyAppAdapter.setDailyAppBeans(dailyAppBeans); diff --git a/app/src/main/java/com/xxpatx/os/activity/dailyapp/DailyAppViewModel.java b/app/src/main/java/com/xxpatx/os/activity/dailyapp/DailyAppViewModel.java index 325e0f9..6c256a2 100644 --- a/app/src/main/java/com/xxpatx/os/activity/dailyapp/DailyAppViewModel.java +++ b/app/src/main/java/com/xxpatx/os/activity/dailyapp/DailyAppViewModel.java @@ -22,11 +22,7 @@ public class DailyAppViewModel extends BaseViewModel> mDailyAppData = new MutableLiveData<>(); - - public MutableLiveData> getDailyAppData() { - return mDailyAppData; - } + public MutableLiveData> mDailyAppData = new MutableLiveData<>(); public void getPackageList() { List appBeanList = AppStatusManager.getInstance().getPackageList(); diff --git a/app/src/main/java/com/xxpatx/os/activity/main/MainActivity.java b/app/src/main/java/com/xxpatx/os/activity/main/MainActivity.java index 11baa1e..1dc3a6e 100644 --- a/app/src/main/java/com/xxpatx/os/activity/main/MainActivity.java +++ b/app/src/main/java/com/xxpatx/os/activity/main/MainActivity.java @@ -406,7 +406,7 @@ public class MainActivity extends BaseMvvmActivity>() { + mViewModel.mDesktopIconData.observe(this, new Observer>() { @Override public void onChanged(ArrayList desktopIcons) { int x = 0; @@ -441,7 +441,7 @@ public class MainActivity extends BaseMvvmActivity() { + mViewModel.mAppInfoMutableLiveData.observe(this, new Observer() { @Override public void onChanged(AppInfo appInfo) { if (appInfo == null) { @@ -563,7 +563,7 @@ public class MainActivity extends BaseMvvmActivity { private static final String TAG = "MainViewModel"; @@ -94,9 +96,6 @@ public class MainViewModel extends BaseViewModel mNowBaseBeanData = new MutableLiveData<>(); - public MutableLiveData getNowBaseBeanData() { - return mNowBaseBeanData; - } public void getWeatherNow(String location) { Log.e(TAG, "getWeatherNow: " + location); @@ -136,9 +135,6 @@ public class MainViewModel extends BaseViewModel mHourlyBeanData = new MutableLiveData<>(); - public MutableLiveData getHourlyBeanData() { - return mHourlyBeanData; - } public void getWeather24Hourly(String location) { QWeather.getWeather24Hourly(getCtx(), location, new QWeather.OnResultWeatherHourlyListener() { @@ -170,9 +166,6 @@ public class MainViewModel extends BaseViewModel DailyBeanData = new MutableLiveData<>(); - public MutableLiveData getDailyBeanData() { - return DailyBeanData; - } public void getWeather7D(String location) { QWeather.getWeather7D(getCtx(), location, new QWeather.OnResultWeatherDailyListener() { @@ -202,9 +195,6 @@ public class MainViewModel extends BaseViewModel mSnInfoData = new MutableLiveData<>(); - public MutableLiveData getSnInfoData() { - return mSnInfoData; - } public void getSnInfo() { NetInterfaceManager.getInstance().getSnInfoControl() @@ -239,11 +229,8 @@ public class MainViewModel extends BaseViewModel> mDesktopIconData = new MutableLiveData<>(); + public MutableLiveData> mDesktopIconData = new MutableLiveData<>(); - public MutableLiveData> getDesktopIconData() { - return mDesktopIconData; - } public void getAppList() { Observable.create(new ObservableOnSubscribe>() { @@ -279,11 +266,7 @@ public class MainViewModel extends BaseViewModel mActivationData = new MutableLiveData<>(); - - public MutableLiveData getActivationData() { - return mActivationData; - } + public MutableLiveData mActivationData = new MutableLiveData<>(); public void getSnIsActivation() { NetInterfaceManager.getInstance().getSnIsActivationObservable() @@ -329,11 +312,7 @@ public class MainViewModel extends BaseViewModel mAppInfoData = new MutableLiveData<>(); - - public MutableLiveData getAppInfoData() { - return mAppInfoData; - } + public MutableLiveData mAppInfoMutableLiveData = new MutableLiveData<>(); public void checkUpdate() { NetInterfaceManager.getInstance().getUpdateObservable() @@ -349,7 +328,25 @@ public class MainViewModel extends BaseViewModel>>() { - @Override - public void onSubscribe(@NonNull Disposable d) { - Log.e("getDesktopLayout", "onSubscribe: "); - } - - @Override - public void onNext(@NonNull BaseResponse> listBaseResponse) { - Log.e("getDesktopLayout", "onNext: " + listBaseResponse); - } - - @Override - public void onError(@NonNull Throwable e) { - Log.e("getDesktopLayout", "onError: " + e.getMessage()); - onComplete(); - } - - @Override - public void onComplete() { - Log.e("getDesktopLayout", "onComplete: "); - } - }); - } public void uploadContacts() { List contactList = ContactCacheUtils.getInstance().getDatabaseContact(); @@ -450,95 +420,4 @@ public class MainViewModel extends BaseViewModel() { - @Override - public void onSubscribe(Disposable d) { - Log.e("sendAPPUsage", "onSubscribe: "); - } - - @Override - public void onNext(BaseResponse baseResponse) { - Log.e("sendAPPUsage", "onNext: " + baseResponse); - } - - @Override - public void onError(Throwable e) { - Log.e("sendAPPUsage", "onError: " + e.getMessage()); - onComplete(); - } - - @Override - public void onComplete() { - Log.e("sendAPPUsage", "onComplete: "); - } - }); - } else { - Log.e("onRestart", "app = null" + packagename); - } - } - - @Deprecated - public void sendRunningInfo() { - AppUsedTimeUtils.getInstance().setAppPackageName(BuildConfig.APPLICATION_ID); - AppUsedTimeUtils.getInstance().setStartTime(System.currentTimeMillis()); - long time = AppUsedTimeUtils.getInstance().getStartTime(); - JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("app_package", BuildConfig.APPLICATION_ID); - jsonObject.addProperty("version_name", ApkUtils.getAPPVersionName(getCtx(), BuildConfig.APPLICATION_ID)); - jsonObject.addProperty("start_time", time / 1000); - String jsonString = jsonObject.toString(); - Log.e(TAG, "sendRunningInfo: " + jsonString); - NetInterfaceManager.getInstance() - .getRunningAppObservable(jsonString) - .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - Log.e("sendRunningInfo", "onSubscribe: "); - } - - @Override - public void onNext(BaseResponse baseResponse) { - Log.e("sendRunningInfo", "onNext: " + baseResponse); - } - - @Override - public void onError(Throwable e) { - Log.e("sendRunningInfo", "onError: " + e.getMessage()); - onComplete(); - } - - @Override - public void onComplete() { - Log.e("sendRunningInfo", "onComplete: "); - } - }); - } - - @Deprecated - public void getAdminSnSetting() { - NetInterfaceManager.getInstance().getAdminSnSetting(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - - } - }); - } - - } diff --git a/app/src/main/java/com/xxpatx/os/bean/Contact.java b/app/src/main/java/com/xxpatx/os/bean/Contact.java index 94c378c..1359050 100644 --- a/app/src/main/java/com/xxpatx/os/bean/Contact.java +++ b/app/src/main/java/com/xxpatx/os/bean/Contact.java @@ -10,7 +10,7 @@ import java.io.Serializable; public class Contact implements Serializable { private static final long serialVersionUID = 8814155739557674021L; - int id; + long id; String name;//名称 int is_urgent;//是否紧急联系人 0否1是 String mobile;//手机号 @@ -32,11 +32,11 @@ public class Contact implements Serializable { this.simContact = sim; } - public int getId() { + public long getId() { return id; } - public void setId(int id) { + public void setId(long id) { this.id = id; } 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 f55d8e3..4f067fc 100644 --- a/app/src/main/java/com/xxpatx/os/config/CommonConfig.java +++ b/app/src/main/java/com/xxpatx/os/config/CommonConfig.java @@ -5,6 +5,7 @@ public class CommonConfig { /*桌面图标个数*/ public final static int DESKTOP_LIST_SIZE = 3 * 3; + public static final String HIDE_CALENDAR_KEY = "hide_desktop_calendar"; public static final String MAP_LOCATION_JSON_KEY = "MAPLOCATION_JSON_STRING"; public static final String MAP_LONGITUDE_KEY = "map_longitude_key"; diff --git a/app/src/main/java/com/xxpatx/os/db/ContactCacheUtils.java b/app/src/main/java/com/xxpatx/os/db/ContactCacheUtils.java index 7bb15fd..3293bfb 100644 --- a/app/src/main/java/com/xxpatx/os/db/ContactCacheUtils.java +++ b/app/src/main/java/com/xxpatx/os/db/ContactCacheUtils.java @@ -123,7 +123,7 @@ public class ContactCacheUtils { return deleteContact(contact.getId()); } - public boolean deleteContact(int rowId) { + public boolean deleteContact(long rowId) { long id = 0; mDatabase.beginTransaction(); try { diff --git a/app/src/main/java/com/xxpatx/os/dialog/EditContactDialog.java b/app/src/main/java/com/xxpatx/os/dialog/EditContactDialog.java index 2abc6f1..3aab6fb 100644 --- a/app/src/main/java/com/xxpatx/os/dialog/EditContactDialog.java +++ b/app/src/main/java/com/xxpatx/os/dialog/EditContactDialog.java @@ -94,8 +94,10 @@ public class EditContactDialog extends AlertDialog { } if (hideDelete) { + clEdit.setVisibility(View.GONE); clDelete.setVisibility(View.GONE); } else { + clEdit.setVisibility(View.VISIBLE); clDelete.setVisibility(View.VISIBLE); } } diff --git a/app/src/main/java/com/xxpatx/os/fragment/contact/ContactFragment.java b/app/src/main/java/com/xxpatx/os/fragment/contact/ContactFragment.java index 4f9efd0..1e405e0 100644 --- a/app/src/main/java/com/xxpatx/os/fragment/contact/ContactFragment.java +++ b/app/src/main/java/com/xxpatx/os/fragment/contact/ContactFragment.java @@ -228,12 +228,12 @@ public class ContactFragment extends BaseMvvmFragment() { diff --git a/app/src/main/java/com/xxpatx/os/fragment/home/HomeViewModel.java b/app/src/main/java/com/xxpatx/os/fragment/home/HomeViewModel.java index 0a96f07..e65d728 100644 --- a/app/src/main/java/com/xxpatx/os/fragment/home/HomeViewModel.java +++ b/app/src/main/java/com/xxpatx/os/fragment/home/HomeViewModel.java @@ -36,7 +36,7 @@ public class HomeViewModel extends BaseViewModel> DesktopIconData = new MutableLiveData<>(); diff --git a/app/src/main/java/com/xxpatx/os/fragment/phone/contact/ContactFragment.java b/app/src/main/java/com/xxpatx/os/fragment/phone/contact/ContactFragment.java index f01a69d..01c6f17 100644 --- a/app/src/main/java/com/xxpatx/os/fragment/phone/contact/ContactFragment.java +++ b/app/src/main/java/com/xxpatx/os/fragment/phone/contact/ContactFragment.java @@ -1,11 +1,13 @@ package com.xxpatx.os.fragment.phone.contact; +import android.app.Activity; import android.content.ContentResolver; -import android.content.Context; +import android.content.ContentUris; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; +import android.provider.ContactsContract; import android.util.Log; import android.view.Gravity; import android.view.View; @@ -41,7 +43,7 @@ public class ContactFragment extends BaseMvvmFragment getSIMContacts() { + getAll(); List contactList = new ArrayList<>(); ContentResolver resolver = mContext.getContentResolver(); // 获取Sims卡联系人 Uri uri = Uri.parse("content://icc/adn"); Cursor phoneCursor = resolver.query(uri, null, null, null, null); if (phoneCursor != null) { - final int colName = phoneCursor.getColumnIndex(NAME); - final int colNumber = phoneCursor.getColumnIndex(NUMBER); + int colName = phoneCursor.getColumnIndex(NAME); + int colNumber = phoneCursor.getColumnIndex(NUMBER); while (phoneCursor.moveToNext()) { String number = phoneCursor.getString(colNumber); // 当手机号码为空的或者为空字段 跳过当前循环 String username = phoneCursor.getString(colName); - Log.e(TAG, "getSIMContacts: number = " + number + " username = " + username); + long id = phoneCursor.getLong(phoneCursor.getColumnIndex("_id")); + Log.e(TAG, "getSIMContacts: number = " + number + " username = " + username + " _id = " + id); Contact contact = new Contact(username, number, true); + contact.setId(id); contactList.add(contact); } phoneCursor.close(); @@ -157,15 +166,31 @@ public class ContactFragment extends BaseMvvmFragment { + private static final String TAG = "ContactViewModel"; private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); @Override @@ -111,8 +124,9 @@ public class ContactViewModel extends BaseViewModel() { @Override @@ -136,5 +150,131 @@ public class ContactViewModel extends BaseViewModel subscriptionInfos = subscriptionManager.getActiveSubscriptionInfoList(); +// if (subscriptionInfos != null) { +// for (SubscriptionInfo subscriptionInfo : subscriptionInfos) { +// Uri rawContactUri = Uri.parse("content://icc/adn/" + simContactId); +// Uri uri = Uri.withAppendedPath(ContactsContract.RawContacts.CONTENT_URI, subscriptionInfo.getSimSlotIndex() + ""); +// ContentResolver contentResolver = getCtx().getContentResolver(); +// Cursor cursor = contentResolver.query(uri, new String[]{ContactsContract.RawContacts._ID}, null, null, null); +// if (cursor != null && cursor.moveToFirst()) { +// do { +// long rawContactId = cursor.getLong(cursor.getColumnIndex(ContactsContract.RawContacts._ID)); +// Log.e(TAG, "deleteSimContact: " + contentResolver.delete(ContentUris.withAppendedId(rawContactUri, rawContactId), null, null)); +// } while (cursor.moveToNext()); +// cursor.close(); +// } +// } +// } + SubscriptionManager subscriptionManager = SubscriptionManager.from(getCtx()); + List subscriptionInfos = subscriptionManager.getActiveSubscriptionInfoList(); + if (subscriptionInfos != null) { + for (SubscriptionInfo subscriptionInfo : subscriptionInfos) { + int subscriptionId = subscriptionInfo.getSubscriptionId(); + Uri rawContactUri = Uri.parse("content://icc/adn/subId/" + subscriptionId); + Uri dataUri = Uri.parse("content://icc/adn/subId/" + subscriptionId + "/data"); + + ContentResolver resolver = getCtx().getContentResolver(); + Uri uri = ContentUris.withAppendedId(rawContactUri, Integer.parseInt(simContactId)); + Log.e(TAG, "deleteSimContact: " + resolver.delete(uri, null, null)); + Log.e(TAG, "deleteSimContact: " + resolver.delete(dataUri, ContactsContract.RawContacts.CONTACT_ID + " = " + simContactId, null)); + } + } + } + + private void initializeLocalPhoneAccount() { + try { + final ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI); + builder.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null); + builder.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null); + + final ArrayList operations = new ArrayList<>(); + operations.add(builder.build()); + + final ContentProviderResult[] results = getCtx().getContentResolver().applyBatch(ContactsContract.AUTHORITY, operations); + final Optional rawContactUri = Arrays.stream(results).findFirst(); + rawContactUri.ifPresent(new Consumer() { + @Override + public void accept(ContentProviderResult value) { + ContactViewModel.this.getCtx().getContentResolver().delete(value.uri, null, null); + } + }); + } catch (Exception ignored) { + + } + } + +// public boolean deleteContactsinfo(String deleteid) { +// try { +// ContentResolver mContentResolver = getCtx().getContentResolver(); +// Cursor cursor = mContentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, "_id =?", new String[]{deleteid}, null); +// if (cursor.moveToFirst()) { +// int index_in_sim = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.INDEX_IN_SIM)); +// Log.d(TAG, "deleteContactsinfo: " + " index_in_sim " + index_in_sim); +// //通过index_in_sim 来判断是sim卡中的联系人还是设备中的联系人 +// if (index_in_sim != -1) { +// String lookup_key = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY)); +// int indicate_phone_or_sim_contact = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.INDICATE_PHONE_SIM)); +// Uri simUri = Uri.parse("content://icc/pbr/subId/" + indicate_phone_or_sim_contact); +// int delete1 = mContentResolver.delete(simUri, "index = " + index_in_sim, null); +// int delete5 = mContentResolver.delete(Uri.parse("content://com.android.contacts/contacts/lookup/" + lookup_key + "/" + deleteid), null, null); +// Log.d(TAG, " delete1 " + delete1 + " delete5 " + delete5); +// } else { +// mContentResolver.delete(Uri.parse("content://com.android.contacts/raw_contacts"), "_id =?", new String[]{deleteid}); +// mContentResolver.delete(Uri.parse("content://com.android.contacts/data"), ContactsContract.RawContacts.CONTACT_ID + " =?", new String[]{deleteid}); +// } +// cursor.close(); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// return false; +// } +// return true; +// } + + /** + * 删除单个联系人数据 + * + * @param name + * @return 是否删除成功 + */ + public boolean delete(String name) { + try { + // 根据姓名求id + Uri uri = Uri.parse("content://icc/adn/"); + ContentResolver resolver = getCtx().getContentResolver(); + Cursor cursor = resolver.query(uri, new String[]{ContactsContract.Data._ID}, "display_name = ?", new String[]{name}, null); + if (cursor.moveToFirst()) { + int id = cursor.getInt(0); + // 根据id删除data中的相应数据 + resolver.delete(uri, "display_name = ?", new String[]{name}); + Uri dataUri = Uri.parse("content://com.android.contacts/data"); + resolver.delete(dataUri, "raw_contact_id = ?", new String[]{id + ""}); + return true; + } + } catch (Exception e) { + e.printStackTrace(); + Log.e(TAG, "delete: " + e.getMessage()); + } + return false; } } diff --git a/app/src/main/java/com/xxpatx/os/manager/AppStatusManager.java b/app/src/main/java/com/xxpatx/os/manager/AppStatusManager.java index d05830c..4004835 100644 --- a/app/src/main/java/com/xxpatx/os/manager/AppStatusManager.java +++ b/app/src/main/java/com/xxpatx/os/manager/AppStatusManager.java @@ -11,6 +11,7 @@ import com.tencent.mmkv.MMKV; import com.xxpatx.os.activity.main.MainActivity; import com.xxpatx.os.bean.DailyAppBean; import com.xxpatx.os.config.CommonConfig; +import com.xxpatx.os.utils.ApkUtils; import java.util.ArrayList; import java.util.HashSet; @@ -43,6 +44,7 @@ public class AppStatusManager { this.add("com.android.contacts"); this.add("com.android.dialer"); this.add("com.mediatek.camera"); + this.add("cn.etouch.ecalendar"); }}; @@ -52,7 +54,17 @@ public class AppStatusManager { } this.mContext = context; Set stringSet = mMMKV.decodeStringSet(APP_STATUS_MANAGER_KEY, defaultHiedApp); + Log.e(TAG, "AppStatusManager: " + stringSet); this.hidedAppSet = stringSet; + + if (!mMMKV.decodeBool(CommonConfig.HIDE_CALENDAR_KEY, false)) { + removeHidedApp("cn.etouch.ecalendar"); + addHidedApp("com.youloft.calendar"); + addHidedApp("com.honghui.huangli"); + ApkUtils.uninstall(mContext, "cn.etouch.ecalendar"); + mMMKV.encode(CommonConfig.HIDE_CALENDAR_KEY, true); + Log.e(TAG, "AppStatusManager: hide calendar"); + } } public static void init(Context context) { @@ -109,7 +121,7 @@ public class AppStatusManager { } } if (hidedAppSet.contains("xxpatx.os.service")) { - DailyAppBean serviceIcon = new DailyAppBean("客服中心","xxpatx.os.service"); + DailyAppBean serviceIcon = new DailyAppBean("客服中心", "xxpatx.os.service"); dailyAppBeanList.add(0, serviceIcon); } 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 8610665..e2c365c 100644 --- a/app/src/main/java/com/xxpatx/os/network/NetInterfaceManager.java +++ b/app/src/main/java/com/xxpatx/os/network/NetInterfaceManager.java @@ -445,7 +445,7 @@ public class NetInterfaceManager { .observeOn(AndroidSchedulers.mainThread()); } - public Observable getMailListDeleteObservable(int id) { + public Observable getMailListDeleteObservable(long id) { return mRetrofit.create(MailListDeleteApi.class) .deleteMailList(Utils.getSerial(), id) .subscribeOn(Schedulers.io()) diff --git a/app/src/main/java/com/xxpatx/os/network/api/uiui/contact/MailListDeleteApi.java b/app/src/main/java/com/xxpatx/os/network/api/uiui/contact/MailListDeleteApi.java index 2c81602..493ef72 100644 --- a/app/src/main/java/com/xxpatx/os/network/api/uiui/contact/MailListDeleteApi.java +++ b/app/src/main/java/com/xxpatx/os/network/api/uiui/contact/MailListDeleteApi.java @@ -13,6 +13,6 @@ public interface MailListDeleteApi { @POST(UrlAddress.MAIL_LIST_DELETE) Observable deleteMailList( @Field("sn") String sn, - @Field("id") int id + @Field("id") long id ); } diff --git a/app/src/main/java/com/xxpatx/os/service/WeAccessibilityService.java b/app/src/main/java/com/xxpatx/os/service/WeAccessibilityService.java index 912909c..a5bbbfa 100644 --- a/app/src/main/java/com/xxpatx/os/service/WeAccessibilityService.java +++ b/app/src/main/java/com/xxpatx/os/service/WeAccessibilityService.java @@ -163,7 +163,7 @@ public class WeAccessibilityService extends AccessibilityService { step(Property.TEXT, mName, Step.CLICK_INFO); break; case CLICK_INFO://进入个人信息页面 - step(Property.TEXT, DIALER_TEXT, Step.CLICK_CALL); + stepCallDialog(Property.TEXT, DIALER_TEXT, Step.CLICK_CALL); break; case CLICK_CALL://打视频或者电话 if (mCallType == TYPE_VIDEO) { @@ -219,6 +219,26 @@ public class WeAccessibilityService extends AccessibilityService { } } + private boolean stepCallDialog(Property type, String text, Step nextStep) { + AccessibilityNodeInfo node = findNode(getRootInActiveWindow(), type, text); + if (node != null) { + Log.e(TAG, "stepCallDialog: isVisibleToUser: " + node.isVisibleToUser()); + if (node.isVisibleToUser()) { + clickNode(node); + Log.e(TAG, "stepCallDialog: mCurrentStep: " + mCurrentStep + " done"); + mCurrentStep = nextStep; + Log.e(TAG, "stepCallDialog: next: " + mCurrentStep); + return true; + } else { + scrolDown(); + return false; + } + } else { + scrolDown(); + return false; + } + } + private boolean stepHome(Property type, String text) { AccessibilityNodeInfo node = findNode(getRootInActiveWindow(), type, text); if (node != null) { @@ -298,8 +318,28 @@ public class WeAccessibilityService extends AccessibilityService { } private void clickNode(AccessibilityNodeInfo node) { + try { + Log.e(TAG, "clickNode: getText = " + node.getText()); + } catch (Exception e) { + Log.e(TAG, "clickNode: e = " + e.getMessage()); + } + Log.e(TAG, "clickNode: isClickable = " + node.isClickable()); if (node.isClickable()) { - node.performAction(AccessibilityNodeInfo.ACTION_CLICK); + boolean performAction = node.performAction(AccessibilityNodeInfo.ACTION_CLICK); + Log.e(TAG, "clickNode: performAction = " + performAction); + if (!performAction) { + Rect rect = new Rect(); + node.getBoundsInScreen(rect); + int x = rect.left; + int y = rect.top; + Log.e(TAG, "clickNode: x = " + x); + Log.e(TAG, "clickNode: y = " + y); + int width = rect.width(); + int height = rect.height(); + Log.e(TAG, "clickNode: width = " + width); + Log.e(TAG, "clickNode: height = " + height); + Log.e(TAG, "clickNode: clickByNode = " + clickByNode(x + width / 2, y + height / 2)); + } node.recycle(); } else { AccessibilityNodeInfo parent = node.getParent(); 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 cf4809b..5f2a173 100644 --- a/app/src/main/java/com/xxpatx/os/utils/ApkUtils.java +++ b/app/src/main/java/com/xxpatx/os/utils/ApkUtils.java @@ -185,6 +185,7 @@ public class ApkUtils { this.add("com.tencent.mm"); this.add("com.ss.android.ugc.aweme"); this.add("com.mediatek.camera"); + this.add("cn.etouch.ecalendar"); }}; /**