From 1970a2724677107d9a7d03219fee7325fca3a98a Mon Sep 17 00:00:00 2001 From: fanhuitong <981964879@qq.com> Date: Tue, 11 Oct 2022 20:07:11 +0800 Subject: [PATCH] =?UTF-8?q?version:=20fix:=20update:=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E4=B8=BB=E9=A1=B5=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=81=94=E7=B3=BB?= =?UTF-8?q?=E4=BA=BA(=E6=9C=AA=E5=AE=8C=E5=85=A8=E5=AE=9E=E7=8E=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + .../uiui/aios/activity/EmergencyActivity.java | 12 +-- .../activity/contact/ContactActivity.java | 46 +++++++++ .../aios/activity/contact/ContactContact.java | 17 ++++ .../activity/contact/ContactPresenter.java | 76 +++++++++++++++ .../aios/activity/main/MainPresenter.java | 4 +- .../com/uiui/aios/adapter/ContactAdapter.java | 60 ++++++++++++ .../uiui/aios/adapter/SOSNnmberAdapter.java | 14 +-- .../bean/{SOSSetting.java => Contact.java} | 2 +- .../com/uiui/aios/bean/SystemSettings.java | 6 +- .../uiui/aios/fragment/CustomFragment.java | 91 +++++++----------- .../aios/network/NetInterfaceManager.java | 47 +++++++-- .../com/uiui/aios/network/URLAddress.java | 2 + .../uiui/aios/network/api/GetMailList.java | 18 ++++ .../main/res/drawable-hdpi/contact_icon.png | Bin 0 -> 4019 bytes .../main/res/drawable-hdpi/gallery_icon.png | Bin 0 -> 4157 bytes .../main/res/drawable-hdpi/health_code.png | Bin 4499 -> 2672 bytes .../main/res/layout-land/activity_contact.xml | 51 ++++++++++ .../main/res/layout-land/activity_weather.xml | 6 +- .../main/res/layout-land/fragment_custom.xml | 49 +++++----- .../res/layout-land/fragment_custom_back.xml | 6 +- .../main/res/layout-port/activity_contact.xml | 51 ++++++++++ .../main/res/layout-port/fragment_custom.xml | 49 +++++----- app/src/main/res/layout/item_contact.xml | 54 +++++++++++ 24 files changed, 523 insertions(+), 139 deletions(-) create mode 100644 app/src/main/java/com/uiui/aios/activity/contact/ContactActivity.java create mode 100644 app/src/main/java/com/uiui/aios/activity/contact/ContactContact.java create mode 100644 app/src/main/java/com/uiui/aios/activity/contact/ContactPresenter.java create mode 100644 app/src/main/java/com/uiui/aios/adapter/ContactAdapter.java rename app/src/main/java/com/uiui/aios/bean/{SOSSetting.java => Contact.java} (96%) create mode 100644 app/src/main/java/com/uiui/aios/network/api/GetMailList.java create mode 100644 app/src/main/res/drawable-hdpi/contact_icon.png create mode 100644 app/src/main/res/drawable-hdpi/gallery_icon.png create mode 100644 app/src/main/res/layout-land/activity_contact.xml create mode 100644 app/src/main/res/layout-port/activity_contact.xml create mode 100644 app/src/main/res/layout/item_contact.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 850eebb..5be463b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -92,6 +92,7 @@ + phoneListSet; + private List phoneListSet; private CacheHelper mCacheHelper; @Override @@ -80,9 +76,9 @@ public class EmergencyActivity extends AppCompatActivity { return; } Gson gson = new Gson(); - Type type = new TypeToken>() { + Type type = new TypeToken>() { }.getType(); - List setting_sos = gson.fromJson(jsonString, type); + List setting_sos = gson.fromJson(jsonString, type); if (setting_sos == null || setting_sos.size() == 0) { return; } diff --git a/app/src/main/java/com/uiui/aios/activity/contact/ContactActivity.java b/app/src/main/java/com/uiui/aios/activity/contact/ContactActivity.java new file mode 100644 index 0000000..ff7c780 --- /dev/null +++ b/app/src/main/java/com/uiui/aios/activity/contact/ContactActivity.java @@ -0,0 +1,46 @@ +package com.uiui.aios.activity.contact; + +import androidx.recyclerview.widget.RecyclerView; + +import com.uiui.aios.R; +import com.uiui.aios.adapter.ContactAdapter; +import com.uiui.aios.base.BaseActivity; +import com.uiui.aios.bean.Contact; + +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; + +public class ContactActivity extends BaseActivity implements ContactContact.ContactView { + @BindView(R.id.rv_contact) + RecyclerView rv_contact; + + private ContactPresenter mContactPresenter; + private ContactAdapter mContactAdapter; + + @Override + public int getLayoutId() { + return R.layout.activity_contact; + } + + @Override + public void initView() { + ButterKnife.bind(this); + mContactPresenter = new ContactPresenter(this); + mContactPresenter.attachView(this); + mContactPresenter.setLifecycle(lifecycleSubject); + mContactAdapter = new ContactAdapter(); + rv_contact.setAdapter(mContactAdapter); + } + + @Override + public void initData() { + mContactPresenter.getContact(); + } + + @Override + public void setContact(List contactList) { + mContactAdapter.setContactList(contactList); + } +} diff --git a/app/src/main/java/com/uiui/aios/activity/contact/ContactContact.java b/app/src/main/java/com/uiui/aios/activity/contact/ContactContact.java new file mode 100644 index 0000000..20041c6 --- /dev/null +++ b/app/src/main/java/com/uiui/aios/activity/contact/ContactContact.java @@ -0,0 +1,17 @@ +package com.uiui.aios.activity.contact; + +import com.uiui.aios.base.BasePresenter; +import com.uiui.aios.base.BaseView; +import com.uiui.aios.bean.Contact; + +import java.util.List; + +public class ContactContact { + public interface Presenter extends BasePresenter { + void getContact(); + } + + public interface ContactView extends BaseView { + void setContact(List contactList); + } +} diff --git a/app/src/main/java/com/uiui/aios/activity/contact/ContactPresenter.java b/app/src/main/java/com/uiui/aios/activity/contact/ContactPresenter.java new file mode 100644 index 0000000..61bc49c --- /dev/null +++ b/app/src/main/java/com/uiui/aios/activity/contact/ContactPresenter.java @@ -0,0 +1,76 @@ +package com.uiui.aios.activity.contact; + +import android.content.Context; +import android.util.Log; + +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiui.aios.bean.BaseResponse; +import com.uiui.aios.bean.Contact; +import com.uiui.aios.network.NetInterfaceManager; + +import java.util.List; + +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.subjects.BehaviorSubject; + +public class ContactPresenter implements ContactContact.Presenter { + private Context mContext; + private ContactContact.ContactView mView; + + private BehaviorSubject lifecycle; + + void setLifecycle(BehaviorSubject lifecycle) { + this.lifecycle = lifecycle; + } + + public BehaviorSubject getLifecycle() { + return lifecycle; + } + + ContactPresenter(Context context) { + this.mContext = context; + } + + @Override + public void attachView(@NonNull ContactContact.ContactView view) { + this.mView = view; + } + + @Override + public void detachView() { + this.mView = null; + } + + @Override + public void getContact() { + NetInterfaceManager.getInstance() + .getContactListObservable() + .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) + .subscribe(new Observer>>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getContactList", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse> listBaseResponse) { + Log.e("getContactList", "onNext: " + listBaseResponse); + mView.setContact(listBaseResponse.data); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getContactList", "onError: " + e.getMessage()); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("getContactList", "onComplete: "); + } + }); + } +} diff --git a/app/src/main/java/com/uiui/aios/activity/main/MainPresenter.java b/app/src/main/java/com/uiui/aios/activity/main/MainPresenter.java index 72304bb..b26193d 100644 --- a/app/src/main/java/com/uiui/aios/activity/main/MainPresenter.java +++ b/app/src/main/java/com/uiui/aios/activity/main/MainPresenter.java @@ -11,7 +11,7 @@ import com.trello.rxlifecycle4.android.ActivityEvent; import com.uiui.aios.BuildConfig; import com.uiui.aios.bean.BaseResponse; import com.uiui.aios.bean.NetDesktopIcon; -import com.uiui.aios.bean.SOSSetting; +import com.uiui.aios.bean.Contact; import com.uiui.aios.network.NetInterfaceManager; import com.uiui.aios.utils.ApkUtils; import com.uiui.aios.utils.AppUsedTimeUtils; @@ -59,7 +59,7 @@ public class MainPresenter implements MainContact.Presenter { NetInterfaceManager.getInstance().getSystemSettings(true, getLifecycle(), new NetInterfaceManager.SosNumberCallback() { @Override - public void setSosNumber(List setting_sos) { + public void setSosNumber(List setting_sos) { Intent intent = new Intent("setting_sos"); mContext.sendBroadcast(intent); } diff --git a/app/src/main/java/com/uiui/aios/adapter/ContactAdapter.java b/app/src/main/java/com/uiui/aios/adapter/ContactAdapter.java new file mode 100644 index 0000000..87967f4 --- /dev/null +++ b/app/src/main/java/com/uiui/aios/adapter/ContactAdapter.java @@ -0,0 +1,60 @@ +package com.uiui.aios.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.uiui.aios.R; +import com.uiui.aios.bean.Contact; + +import java.util.List; + +public class ContactAdapter extends RecyclerView.Adapter { + private List mContactList; + private Context mContext; + + public void setContactList(List contactList) { + this.mContactList = contactList; + notifyDataSetChanged(); + } + + @NonNull + @Override + public ContactHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + mContext = parent.getContext(); + return new ContactHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_contact, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull ContactHolder contactHolder, int position) { + Contact contact = mContactList.get(position); + Glide.with(contactHolder.iv_head).load(contact.getAvatar()).into(contactHolder.iv_head); + contactHolder.tv_name.setText(contact.getName()); + contactHolder.tv_phone.setText(contact.getMobile()); + } + + @Override + public int getItemCount() { + return mContactList == null ? 0 : mContactList.size(); + } + + static class ContactHolder extends RecyclerView.ViewHolder { + ImageView iv_head; + TextView tv_name; + TextView tv_phone; + + public ContactHolder(@NonNull View itemView) { + super(itemView); + iv_head = itemView.findViewById(R.id.iv_head); + tv_name = itemView.findViewById(R.id.tv_name); + tv_phone = itemView.findViewById(R.id.tv_phone); + } + } +} diff --git a/app/src/main/java/com/uiui/aios/adapter/SOSNnmberAdapter.java b/app/src/main/java/com/uiui/aios/adapter/SOSNnmberAdapter.java index ec73c9c..0f01007 100644 --- a/app/src/main/java/com/uiui/aios/adapter/SOSNnmberAdapter.java +++ b/app/src/main/java/com/uiui/aios/adapter/SOSNnmberAdapter.java @@ -13,16 +13,16 @@ import androidx.recyclerview.widget.RecyclerView; import com.uiui.aios.R; import com.uiui.aios.activity.EmergencyActivity; -import com.uiui.aios.bean.SOSSetting; +import com.uiui.aios.bean.Contact; import java.util.List; public class SOSNnmberAdapter extends RecyclerView.Adapter { - private List phoneNumberList; + private List phoneNumberList; private Context mContext; - public void setPhoneNumberList(List sosSettingList) { - this.phoneNumberList = sosSettingList; + public void setPhoneNumberList(List contactList) { + this.phoneNumberList = contactList; notifyDataSetChanged(); } @@ -36,11 +36,11 @@ public class SOSNnmberAdapter extends RecyclerView.Adapter { Intent intent = new Intent(mContext, EmergencyActivity.class); - intent.putExtra("setting_sos", sosSetting.getMobile()); + intent.putExtra("setting_sos", contact.getMobile()); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); diff --git a/app/src/main/java/com/uiui/aios/bean/SOSSetting.java b/app/src/main/java/com/uiui/aios/bean/Contact.java similarity index 96% rename from app/src/main/java/com/uiui/aios/bean/SOSSetting.java rename to app/src/main/java/com/uiui/aios/bean/Contact.java index 152bc03..c26bd49 100644 --- a/app/src/main/java/com/uiui/aios/bean/SOSSetting.java +++ b/app/src/main/java/com/uiui/aios/bean/Contact.java @@ -7,7 +7,7 @@ import com.google.gson.JsonParser; import java.io.Serializable; -public class SOSSetting implements Serializable { +public class Contact implements Serializable { private static final long serialVersionUID = 8814155739557674021L; int id; diff --git a/app/src/main/java/com/uiui/aios/bean/SystemSettings.java b/app/src/main/java/com/uiui/aios/bean/SystemSettings.java index e4c42ce..81946d5 100644 --- a/app/src/main/java/com/uiui/aios/bean/SystemSettings.java +++ b/app/src/main/java/com/uiui/aios/bean/SystemSettings.java @@ -37,7 +37,7 @@ public class SystemSettings implements Serializable { int qch_restore; int setting_browserInput; int dev_mode; - List setting_sos; + List setting_sos; String setting_volume; String setting_luminance; String setting_typeface; @@ -262,11 +262,11 @@ public class SystemSettings implements Serializable { this.setting_hotspot = setting_hotspot; } - public List getSetting_sos() { + public List getSetting_sos() { return setting_sos; } - public void setSetting_sos(List setting_sos) { + public void setSetting_sos(List setting_sos) { this.setting_sos = setting_sos; } diff --git a/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java b/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java index 90d85ef..d65d03a 100644 --- a/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java +++ b/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java @@ -20,7 +20,6 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.os.Handler; -import android.provider.Settings; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; @@ -32,7 +31,6 @@ import android.widget.TextView; import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationListener; import com.blankj.utilcode.util.NetworkUtils; -import com.bumptech.glide.Glide; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.qweather.sdk.bean.base.Code; @@ -48,6 +46,7 @@ import com.uiui.aios.R; import com.uiui.aios.activity.code.HealthCodeActivity; import com.uiui.aios.activity.EmergencyActivity; import com.uiui.aios.activity.alarm.AlarmClockActivity; +import com.uiui.aios.activity.contact.ContactActivity; import com.uiui.aios.activity.weather.WeatherActivity; import com.uiui.aios.adapter.NotificationAdapter; import com.uiui.aios.adapter.SOSNnmberAdapter; @@ -55,7 +54,7 @@ import com.uiui.aios.bean.AlarmClockData; import com.uiui.aios.bean.AlarmItem; import com.uiui.aios.bean.BaseResponse; import com.uiui.aios.bean.HealthCode; -import com.uiui.aios.bean.SOSSetting; +import com.uiui.aios.bean.Contact; import com.uiui.aios.bean.SnInfo; import com.uiui.aios.bean.UserAvatarInfo; import com.uiui.aios.dialog.SingleDialog; @@ -75,7 +74,6 @@ import com.uiui.aios.utils.Utils; import java.lang.reflect.Method; import java.lang.reflect.Type; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import butterknife.BindView; @@ -94,12 +92,21 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt // @BindView(R.id.cl_alarm) // ConstraintLayout cl_alarm; - @BindView(R.id.cl_note) - ConstraintLayout cl_note; - @BindView(R.id.cl_sos) - ConstraintLayout cl_soso; @BindView(R.id.cl_weather) ConstraintLayout cl_weather; + @BindView(R.id.cl_shared_space) + ConstraintLayout cl_shared_space; + @BindView(R.id.cl_sos) + ConstraintLayout cl_soso; + @BindView(R.id.cl_guard) + ConstraintLayout cl_guard; + @BindView(R.id.cl_health) + ConstraintLayout cl_health; + @BindView(R.id.cl_contact) + ConstraintLayout cl_contact; + @BindView(R.id.cl_ai) + ConstraintLayout cl_ai; + // @BindView(R.id.cl_battery) // ConstraintLayout cl_battery; // @BindView(R.id.tv_add) @@ -130,15 +137,6 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt ImageView iv_note_nodata; @BindView(R.id.iv_head) NiceImageView iv_head; - - @BindView(R.id.cl_health) - ConstraintLayout mClHealth; - @BindView(R.id.cl_tongue) - ConstraintLayout mClTongue; - @BindView(R.id.cl_face) - ConstraintLayout mClFace; - @BindView(R.id.cl_hand) - ConstraintLayout mClHand; @BindView(R.id.tv_name) TextView tv_name; @@ -356,7 +354,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt // ApkUtils.openPackage(mContext, "com.alarmclock.uiui"); // } // }); - cl_note.setOnClickListener(new View.OnClickListener() { + cl_guard.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { getAlarm(); @@ -382,9 +380,6 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt } else { // wifi_ssid.setText("WiFi未连接"); } -// alarmClockAdapter = new AlarmClockAdapter(); -// rv_clock.setLayoutManager(new LinearLayoutManager(mContext)); -// rv_clock.setAdapter(alarmClockAdapter); sosNnmberAdapter = new SOSNnmberAdapter(); rv_sos.setLayoutManager(new LinearLayoutManager(mContext)); rv_sos.setAdapter(sosNnmberAdapter); @@ -400,56 +395,37 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt startActivity(new Intent(mContext, WeatherActivity.class)); } }); -// cl_battery.setOnClickListener(new View.OnClickListener() { -// @Override -// public void onClick(View view) { -// Intent powerUsageIntent = new Intent(Intent.ACTION_POWER_USAGE_SUMMARY); -// ResolveInfo resolveInfo = mContext.getPackageManager().resolveActivity(powerUsageIntent, 0); -//// check that the Battery app exists on this device -// if (resolveInfo != null) { -// startActivity(powerUsageIntent); -// } -// } -// }); - mClHealth.setOnClickListener(new View.OnClickListener() { + cl_shared_space.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ToastUtil.show("此功能暂未上线"); + } + }); + cl_health.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getHealthCode(); -// SchemeUtils.openScheme(mContext, SchemeUtils.SCHEME_TONGUE); } }); - mClTongue.setOnClickListener(new View.OnClickListener() { + cl_contact.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { -// startActivity(new Intent(mContext, CodeActivity.class)); -// startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //直接进入手机中的wifi网络设置界面 - openScheme(SchemeUtils.SCHEME_TONGUE); + startActivity(new Intent(getActivity(), ContactActivity.class)); } }); - mClFace.setOnClickListener(new View.OnClickListener() { + cl_ai.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { -// startActivity(new Intent(mContext, CodeActivity.class)); - openScheme(SchemeUtils.SCHEME_FACE); - } - }); - mClHand.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { -// startActivity(new Intent(mContext, CodeActivity.class)); -// mContext.startActivity(new Intent(mContext, APPListActivity.class)); openScheme(SchemeUtils.SCHEME_HAND); } }); - -// setAlarm(); refreshMemory(); } private void checkSosNumber() { NetInterfaceManager.getInstance().getSystemSettings(new NetInterfaceManager.SosNumberCallback() { @Override - public void setSosNumber(List setting_sos) { + public void setSosNumber(List setting_sos) { Intent intent = new Intent(mContext, EmergencyActivity.class); // intent.putExtra("setting_sos", phone); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -475,12 +451,12 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt public void setSnInfo(SnInfo snInfo) { if (snInfo != null) { if (TextUtils.isEmpty(snInfo.getSn_name())) { - tv_name.setText("未设置"); +// tv_name.setText("未设置"); } else { - tv_name.setText(snInfo.getSn_name()); +// tv_name.setText(snInfo.getSn_name()); } } else { - tv_name.setText("未设置"); +// tv_name.setText("未设置"); } } }); @@ -496,7 +472,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt Log.e("getUserAvatarInfoControl", "onNext: " + userAvatarInfoBaseResponse); if (userAvatarInfoBaseResponse.code == 200) { if (!mContext.isDestroyed()) { - Glide.with(iv_head).load(userAvatarInfoBaseResponse.data.getAvatar()).into(iv_head); +// Glide.with(iv_head).load(userAvatarInfoBaseResponse.data.getAvatar()).into(iv_head); } } } @@ -565,6 +541,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt dialog.setMessage("绑定手机才能使用"); dialog.show(); } else { + ApkUtils.openApp(mContext, "com.uiui.health"); SchemeUtils.openScheme(mContext, uri); } } @@ -579,9 +556,9 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt // iv_sos.setVisibility(View.VISIBLE); } else { Gson gson = new Gson(); - Type type = new TypeToken>() { + Type type = new TypeToken>() { }.getType(); - List setting_sos = gson.fromJson(jsonString, type); + List setting_sos = gson.fromJson(jsonString, type); if (setting_sos == null || setting_sos.size() == 0) { // rv_sos.setVisibility(View.VISIBLE); // iv_sos.setVisibility(View.GONE); diff --git a/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java index 1b15e36..f8cf7d5 100644 --- a/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java @@ -2,7 +2,6 @@ package com.uiui.aios.network; import android.annotation.SuppressLint; import android.content.Context; -import android.text.TextUtils; import android.util.Log; import com.google.gson.Gson; @@ -20,7 +19,7 @@ import com.uiui.aios.bean.DemandBean; import com.uiui.aios.bean.GoodsInfo; import com.uiui.aios.bean.HealthCode; import com.uiui.aios.bean.NetDesktopIcon; -import com.uiui.aios.bean.SOSSetting; +import com.uiui.aios.bean.Contact; import com.uiui.aios.bean.SnInfo; import com.uiui.aios.bean.SystemSettings; import com.uiui.aios.bean.UserAvatarInfo; @@ -34,6 +33,7 @@ import com.uiui.aios.network.api.AppUsageRecordApi; import com.uiui.aios.network.api.ArticleListApi; import com.uiui.aios.network.api.DemandListApi; import com.uiui.aios.network.api.GetDesktopApi; +import com.uiui.aios.network.api.GetMailList; import com.uiui.aios.network.api.GetUserIDApi; import com.uiui.aios.network.api.GoodsListApi; import com.uiui.aios.network.api.HealthCodeApi; @@ -239,6 +239,13 @@ public class NetInterfaceManager { .observeOn(AndroidSchedulers.mainThread()); } + public Observable>> getContactListObservable() { + return mRetrofit.create(GetMailList.class) + .getContact(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + public interface onCompleteCallback { void onComplete(); } @@ -788,7 +795,7 @@ public class NetInterfaceManager { } public interface SosNumberCallback { - void setSosNumber(List setting_sos); + void setSosNumber(List setting_sos); void setEmpty(); @@ -809,9 +816,9 @@ public class NetInterfaceManager { getSystemSettings(lifecycle, callback); } else { Gson gson = new Gson(); - Type type = new TypeToken>() { + Type type = new TypeToken>() { }.getType(); - List setting_sos = gson.fromJson(jsonString, type); + List setting_sos = gson.fromJson(jsonString, type); if (setting_sos == null || setting_sos.size() == 0) { if (callback != null) callback.setEmpty(); } else { @@ -853,7 +860,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(); + List setting_sos = systemSettings.getSetting_sos(); if (setting_sos == null || setting_sos.size() == 0) { mCacheHelper.put(URLAddress.GET_SETTINGS, ""); if (callback != null) callback.setEmpty(); @@ -876,9 +883,9 @@ public class NetInterfaceManager { if (callback != null) callback.setEmpty(); } else { Gson gson = new Gson(); - Type type = new TypeToken>() { + Type type = new TypeToken>() { }.getType(); - List setting_sos = gson.fromJson(jsonString, type); + List setting_sos = gson.fromJson(jsonString, type); if (setting_sos == null || setting_sos.size() == 0) { if (callback != null) callback.setEmpty(); } else { @@ -896,4 +903,28 @@ public class NetInterfaceManager { } }; } + + public void getContactList() { + getContactListObservable().subscribe(new Observer>>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getContactList", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse> listBaseResponse) { + Log.e("getContactList", "onNext: " + listBaseResponse); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getContactList", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getContactList", "onComplete: "); + } + }); + } } diff --git a/app/src/main/java/com/uiui/aios/network/URLAddress.java b/app/src/main/java/com/uiui/aios/network/URLAddress.java index 2d19589..f244b69 100644 --- a/app/src/main/java/com/uiui/aios/network/URLAddress.java +++ b/app/src/main/java/com/uiui/aios/network/URLAddress.java @@ -38,6 +38,8 @@ public class URLAddress { public static final String GET_DEMAND_LIST = "demandList"; /*获取健康吗*/ public static final String GET_HEALTH_CODE = "getHealthCode"; + /*获取联系人*/ + public static final String GET_MAIL_LIST = "Control/getMailList"; public static final String GET_USER_ID = "getUserId"; diff --git a/app/src/main/java/com/uiui/aios/network/api/GetMailList.java b/app/src/main/java/com/uiui/aios/network/api/GetMailList.java new file mode 100644 index 0000000..d24d4a6 --- /dev/null +++ b/app/src/main/java/com/uiui/aios/network/api/GetMailList.java @@ -0,0 +1,18 @@ +package com.uiui.aios.network.api; + +import com.uiui.aios.bean.BaseResponse; +import com.uiui.aios.bean.Contact; +import com.uiui.aios.network.URLAddress; + +import java.util.List; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface GetMailList { + @GET(URLAddress.GET_MAIL_LIST) + Observable>> getContact( + @Query("sn") String sn + ); +} diff --git a/app/src/main/res/drawable-hdpi/contact_icon.png b/app/src/main/res/drawable-hdpi/contact_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..759569e02fb558ca209c55e91aab7936449b9b7a GIT binary patch literal 4019 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 T;k*QH{YKkaJ7R8G9zFR#UMKb5 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/gallery_icon.png b/app/src/main/res/drawable-hdpi/gallery_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f509ecef6a76fcce9fe01b619daccc66919a0186 GIT binary patch literal 4157 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 Dc9Jy# literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/health_code.png b/app/src/main/res/drawable-hdpi/health_code.png index a67a4a58ae42d0c63b10326b503c43936c3b1e77..f27a8bd00e28da60559c2ff724b4d061814e4ca2 100644 GIT binary patch literal 2672 zcmaJ?d0Z1`8lHp{K~6;!w3Hzg0h^G7BQ}8q$bp~)DTksKOGqXVFh`SM0zwHa;(=6} z70`m>E%g9F0jpdJ1Q6DG00tKYmLrRRiGWlr+7480|5*3?&Ai|7d*A21o^NJEE3L1{|&lCjW53oY%yE4HA!ztKe9KjVopVE6p7VH133Irdt zrLs`yuXz6_urxeL4B?d7ji{%smp>si$x9;N@Z*z2MT0R&@h54pU)-J{M=}sOni%r8IC7T$ayJ|u+ME`e#?z%GWbl;Kby!!KO% zcs$B4bdYR0ai*rY7bxqo491Tbb{Oj~`9w4pfo;ahwKLpc{ZXs_A|Up~*1}bpRznwU zNk>e}^E4IPW_Cwh=*V21f1~*E6IB-_vh2~doLf`Fdy;KeJl;2s{t6q0jhHBizeuV3 zwM){s`~uVL&GL3afk4x*dwzREy9c&4zq>_VXo1>(KpXs|`d+zUS(*IoWBKJ?SBD1` zX4`8<0=`*SAi4w<4%^!-Kb%&&;|%>4kK zEO-1;r=0xdW#k!U;#^txtQr{*Mm5$wqTa46=q)=LL&G$T7bH%rImlk4HR7fl_VI_p z-GaT>D5vWVrGgC_4)S0ssI+kJ7{(rWWZUhCU80HQm{{99J-y>4Eh8saSEBy)q2b}N zmAK~XHSDpevv*n+2YpgYt;=4VV8}|8TzGtjR}#4>0f9P_K=R0G%Iv2jlg%sv6yOV- zs5XlKE{$vB|9DbXsLwom+k>`EH9M0uh>Aw|tV|K|+8$oMos%1)vuw&*^1!xBL$)x& zm+zQT)yGmT%uyx&Bdy7|j8VS80@{M`jkalZc+k-=-7h9}pwzQ%pOM8Il&(#!OIvcU z5xy0hC@tncrA7d_*tzk3|Ewft;B{zKe7kycCV=fl0al;=YU=LfpRRy3PkUX zH9}H+M=e;NzMlKN27UNPqj70rB#NA05Cjl!U0jI**P|jw>+Fs51;lCPPt=ap-~4vm z{3Ryo#q`_pt0IS66?gZJ4SEqH%I^i=B}XH8wBMFrecsoN==9Nib;G**mSbXUG27+R zrs{24or&KwGiuyy&f6kXK7OjD)9&D&NM!fKy2}Z#eF0X+BD<;IB@Nr^oZf7nxOO_h zJd9G+XP#1ew%cWF=H#orw_^9BeNs;3hIUNWN``%1*0eMh1})p#RO0wW!JOxRX{TB@ zAjd)G7T(#7$m^?Q>43)c8Oay01OSBc=_!dJKf%_`n0$k5$0E)J(qotS&zszs9!<6kLyMD z8vq~xApaD#+ZV+--z~e{{Jj|CF-KhyMdnuPQEN*(JT*TRA0nCa}@v)Vfte ztT%nvjv3o(8~nV+mLh;J)8Sq%G)#su9d}>7Ea%7EC-e(xIpwcHa2VfT240uzT`EJC z`Cb2{Bs;2N;MWkMIe=Km2^O!ocD_l|{)<*;H=j;7Uvfe_SeCq|Zzu@i6eT{Y<~{m{ zn~PCM&f1H-7`rf4Qp#Ms_Jr8`(|7ikpD3QDJ)G2=WT(CgU4j++Uok~pF@O&Y+E)i{ zczbsiab9H{?dG+!`RAhpFSnpH4$496I#Lf-4K#cpWq&SStWW9jr<{Z=D5-a;-Rc)F zn|Gi>7Hhwc8hcgsFHVnb?G{ad*9BR=mQkOD-LbA~LOa7SshYpq&qwt&DT$WP)Tu{Q z2azVMX@~n|R+4J)@FrgVgnVtMsiw#zC?(msP{;y%;qd%biElBH)opttMqZ3X4G*uUwi3bFyvC{Be01kB-CCTE9)GjU zkCp$3Ib@7zb4y=pQr}(|1r1BWkleMx-i}jQQwGz=fc=gp)<-RYLO;qPqXk~v+uoUq zDH{CxpAVoa?p4Zznn7?XF@Vo&S9{eemxW>1CFIaI$)8_~8rsonFL zo*^bx-5X#i>{Rw`Hmaq~T`n(#8O&x8WB1I~rJ?plSEe-;7(b;Ud6a-?YM;T<_eu0i zRY^2$M4!EYvI`2w{gid6p)SmyXMFkJ>g{$V-lhjDubg#QQ(ye^_EADWQKYso5opc~ zs(09rstym}4G}(@j%2ueGn!KApj?CKGgNceRo59S(vHb(%E-%jJ4Ok$*NMNSZ0x%6 zUE}$##=K3I4|m5C9-cBy^vdU-=RZBwQ$1mjGGa9Z|1$J9Csn)nepU7tvfkhtfSApB U87sDKodMtx$P8wb(xNl|0Pb~7K>z>% literal 4499 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 diff --git a/app/src/main/res/layout-land/activity_contact.xml b/app/src/main/res/layout-land/activity_contact.xml new file mode 100644 index 0000000..d66bab7 --- /dev/null +++ b/app/src/main/res/layout-land/activity_contact.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/activity_weather.xml b/app/src/main/res/layout-land/activity_weather.xml index a7a3c76..f57a916 100644 --- a/app/src/main/res/layout-land/activity_weather.xml +++ b/app/src/main/res/layout-land/activity_weather.xml @@ -9,13 +9,15 @@ + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent"> + - - - + --> + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-port/fragment_custom.xml b/app/src/main/res/layout-port/fragment_custom.xml index 0ebb9f1..50795a8 100644 --- a/app/src/main/res/layout-port/fragment_custom.xml +++ b/app/src/main/res/layout-port/fragment_custom.xml @@ -86,7 +86,7 @@ android:orientation="horizontal"> - - - --> + + + @@ -329,7 +330,7 @@ android:orientation="horizontal"> + + + + + + + + + + + + + \ No newline at end of file