diff --git a/app/build.gradle b/app/build.gradle
index 79e5b78..6cd03c1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -15,8 +15,8 @@ android {
applicationId "com.uiui.os"
minSdkVersion 24
targetSdkVersion 29
- versionCode 8
- versionName "1.7"
+ versionCode 10
+ versionName "1.9"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
@@ -157,7 +157,7 @@ dependencies {
// implementation 'io.reactivex.rxjava2:rxjava:2.2.12'
// implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
//
- implementation 'com.squareup.okhttp3:okhttp:4.9.1'
+ implementation 'com.squareup.okhttp3:okhttp:4.9.3'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
// implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 31e507a..9629519 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -35,10 +35,33 @@
android:restoreAnyVersion="true"
android:supportsRtl="true"
android:theme="@style/AppTheme">
+
+
+
+
+
+
+
+
+
+
+
+
+ android:launchMode="singleTask"
+ android:screenOrientation="sensorPortrait" />
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/uiui/os/activity/APPListActivity.java b/app/src/main/java/com/uiui/os/activity/APPListActivity.java
index b5a24bf..436eecb 100644
--- a/app/src/main/java/com/uiui/os/activity/APPListActivity.java
+++ b/app/src/main/java/com/uiui/os/activity/APPListActivity.java
@@ -10,7 +10,6 @@ import android.view.WindowManager;
import android.widget.ImageView;
import androidx.recyclerview.widget.GridLayoutManager;
-import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -18,7 +17,7 @@ import com.uiui.os.R;
import com.uiui.os.adapter.APPListAdapter;
import com.uiui.os.base.BaseActivity;
import com.uiui.os.bean.AppListInfo;
-import com.uiui.os.utils.APKUtils;
+import com.uiui.os.utils.ApkUtils;
import com.uiui.os.utils.BitmapUtils;
import com.uiui.os.view.RecyclerViewSpacesItemDecoration;
@@ -52,7 +51,7 @@ public class APPListActivity extends BaseActivity {
@Override
public void initData() {
- List applicationInfoList = APKUtils.getSystemApp(APPListActivity.this);
+ List applicationInfoList = ApkUtils.getSystemApp(APPListActivity.this);
PackageManager pm = getPackageManager();
if (null != applicationInfoList) {
List appinfoList = new ArrayList<>();
diff --git a/app/src/main/java/com/uiui/os/activity/main/MainActivity.java b/app/src/main/java/com/uiui/os/activity/main/MainActivity.java
index 4c1a401..392e737 100644
--- a/app/src/main/java/com/uiui/os/activity/main/MainActivity.java
+++ b/app/src/main/java/com/uiui/os/activity/main/MainActivity.java
@@ -6,7 +6,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
-import android.content.pm.ApplicationInfo;
import android.content.res.Configuration;
import android.graphics.Color;
import android.os.IBinder;
@@ -33,7 +32,7 @@ import com.uiui.os.fragment.AppListFragment;
import com.uiui.os.fragment.BaseFragmentPagerAdapter;
import com.uiui.os.fragment.CustomFragment;
import com.uiui.os.fragment.SecondFragment;
-import com.uiui.os.utils.APKUtils;
+import com.uiui.os.utils.ApkUtils;
import com.uiui.os.utils.AppUsedTimeUtils;
import com.uiui.os.view.ScaleCircleNavigator;
@@ -87,7 +86,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView {
mFragments.add(mCustomFragment);
mMainPresenter.getDesktopLayout();
- ArrayList desktopIcons = APKUtils.queryFilterAppInfo(this);
+ ArrayList desktopIcons = ApkUtils.queryFilterAppInfo(this);
int x = 0;
for (int i = 0; i <= desktopIcons.size(); i++) {
@@ -184,7 +183,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView {
private void addData() {
List fragmentList = new ArrayList<>();
- ArrayList applicationInfoList = APKUtils.queryFilterAppInfo(this);
+ ArrayList applicationInfoList = ApkUtils.queryFilterAppInfo(this);
int x = 0;
for (int i = 0; i <= applicationInfoList.size(); i++) {
if (i != 0 && i % APP_LIST_SIZE == 0) {
@@ -198,14 +197,15 @@ public class MainActivity extends BaseActivity implements MainContact.MainView {
appListFragment.setAppList(new ArrayList<>(applicationInfoList.subList(x, i)));
}
}
- for (int i = 1; i <= fragmentList.size(); i++) {
+ //从第三个开始改
+ for (int i = 2; i <= fragmentList.size(); i++) {
if (mFragments.get(i) != null) {
- mBaseFragmentPagerAdapter.replaceFragment(i, fragmentList.get(i - 1));
+ mBaseFragmentPagerAdapter.replaceFragment(i, fragmentList.get(i - 2));
mFragments.remove(i);
- mFragments.add(i, fragmentList.get(i - 1));
+ mFragments.add(i, fragmentList.get(i - 2));
} else {
- mBaseFragmentPagerAdapter.addFragment(fragmentList.get(i - 1));
- mFragments.add(fragmentList.get(i - 1));
+ mBaseFragmentPagerAdapter.addFragment(fragmentList.get(i - 2));
+ mFragments.add(fragmentList.get(i - 2));
}
}
}
@@ -299,7 +299,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView {
String action = intent.getAction();
Log.e(TAG, "onReceive: " + action);
if (Intent.ACTION_PACKAGE_ADDED.equals(action)
- || Intent.ACTION_MANAGED_PROFILE_REMOVED.equals(action)) {
+ || Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
addData();
}
}
diff --git a/app/src/main/java/com/uiui/os/activity/main/MainPresenter.java b/app/src/main/java/com/uiui/os/activity/main/MainPresenter.java
index 2e1aca5..ab83717 100644
--- a/app/src/main/java/com/uiui/os/activity/main/MainPresenter.java
+++ b/app/src/main/java/com/uiui/os/activity/main/MainPresenter.java
@@ -11,7 +11,7 @@ import com.uiui.os.BuildConfig;
import com.uiui.os.bean.BaseResponse;
import com.uiui.os.bean.NetDesktopIcon;
import com.uiui.os.network.NetInterfaceManager;
-import com.uiui.os.utils.APKUtils;
+import com.uiui.os.utils.ApkUtils;
import com.uiui.os.utils.AppUsedTimeUtils;
import com.uiui.os.utils.Utils;
@@ -91,11 +91,11 @@ public class MainPresenter implements MainContact.Presenter {
String packagename = AppUsedTimeUtils.getInstance().getAppPackageName();
Log.e(TAG, "onRestart packagename == " + packagename);
if (!TextUtils.isEmpty(packagename)) {
- Log.e(TAG, "onRestart: " + APKUtils.getAppNameByPackage(mContext, packagename));
+ Log.e(TAG, "onRestart: " + ApkUtils.getAppNameByPackage(mContext, packagename));
Log.e(TAG, "onRestart: " + packagename);
NetInterfaceManager.getInstance().getAppUsageRecordControl()
.sendappUsageRecord(Utils.getSerial(),
- APKUtils.getAppNameByPackage(mContext, packagename),
+ ApkUtils.getAppNameByPackage(mContext, packagename),
packagename,
AppUsedTimeUtils.getInstance().getStartTime() / 1000,
AppUsedTimeUtils.getInstance().getEndTime() / 1000)
@@ -136,7 +136,7 @@ public class MainPresenter implements MainContact.Presenter {
long time = AppUsedTimeUtils.getInstance().getStartTime();
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("app_package", BuildConfig.APPLICATION_ID);
- jsonObject.addProperty("version_name", APKUtils.getAPPVersionName(mContext, BuildConfig.APPLICATION_ID));
+ jsonObject.addProperty("version_name", ApkUtils.getAPPVersionName(mContext, BuildConfig.APPLICATION_ID));
jsonObject.addProperty("start_time", time / 1000);
String jsonString = jsonObject.toString();
Log.e(TAG, "sendRunningInfo: " + jsonString);
diff --git a/app/src/main/java/com/uiui/os/activity/weather/WeatherPresenter.java b/app/src/main/java/com/uiui/os/activity/weather/WeatherPresenter.java
index d0f90f5..6965a89 100644
--- a/app/src/main/java/com/uiui/os/activity/weather/WeatherPresenter.java
+++ b/app/src/main/java/com/uiui/os/activity/weather/WeatherPresenter.java
@@ -96,7 +96,7 @@ public class WeatherPresenter implements WeatherContact.Presenter {
@Override
public void onSuccess(WeatherDailyBean weatherDailyBean) {
String jsonString = new Gson().toJson(weatherDailyBean);
- Log.e("getWeather", "onSuccess: " + jsonString);
+ Log.d("getWeather", "onSuccess: " + jsonString);
mMMKV.encode(WEATHER_DAILY_KEY, jsonString);
mView.setWeather(weatherDailyBean);
}
diff --git a/app/src/main/java/com/uiui/os/adapter/APPListAdapter.java b/app/src/main/java/com/uiui/os/adapter/APPListAdapter.java
index 274f3be..ac59df4 100644
--- a/app/src/main/java/com/uiui/os/adapter/APPListAdapter.java
+++ b/app/src/main/java/com/uiui/os/adapter/APPListAdapter.java
@@ -14,7 +14,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.uiui.os.R;
import com.uiui.os.bean.AppListInfo;
-import com.uiui.os.utils.APKUtils;
+import com.uiui.os.utils.ApkUtils;
import java.util.List;
@@ -51,7 +51,7 @@ public class APPListAdapter extends RecyclerView.Adapter
holder.root.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- APKUtils.openPackage(mContext, info.getPackageName());
+ ApkUtils.openPackage(mContext, info.getPackageName());
}
});
}
diff --git a/app/src/main/java/com/uiui/os/base/BaseFragment.java b/app/src/main/java/com/uiui/os/base/BaseFragment.java
index f1c36eb..95a9a75 100644
--- a/app/src/main/java/com/uiui/os/base/BaseFragment.java
+++ b/app/src/main/java/com/uiui/os/base/BaseFragment.java
@@ -3,6 +3,7 @@ package com.uiui.os.base;
import android.os.Bundle;
import android.view.View;
+import androidx.annotation.CallSuper;
import androidx.annotation.CheckResult;
import androidx.annotation.ContentView;
import androidx.annotation.LayoutRes;
@@ -15,21 +16,13 @@ import com.trello.rxlifecycle4.LifecycleTransformer;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.FragmentEvent;
import com.trello.rxlifecycle4.android.RxLifecycleAndroid;
+import com.trello.rxlifecycle4.components.RxFragment;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.subjects.BehaviorSubject;
public class BaseFragment extends Fragment implements LifecycleProvider {
- private final BehaviorSubject lifecycleSubject = BehaviorSubject.create();
-
- public BaseFragment() {
- super();
- }
-
- @ContentView
- public BaseFragment(@LayoutRes int contentLayoutId) {
- super(contentLayoutId);
- }
+ public final BehaviorSubject lifecycleSubject = BehaviorSubject.create();
@Override
@NonNull
@@ -53,60 +46,70 @@ public class BaseFragment extends Fragment implements LifecycleProvider hourly = weatherHourlyBean.getHourly();
if (hourly != null && hourly.size() != 0) {
@@ -500,7 +501,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt
private void killBackgroundApp() {
- List pkgList = APKUtils.queryFilterAppList(mContext);
+ List pkgList = ApkUtils.queryFilterAppList(mContext);
for (String pkg : pkgList) {
if (pkg.equalsIgnoreCase(BuildConfig.APPLICATION_ID)) continue;
killBackgroundProcesses(pkg);
diff --git a/app/src/main/java/com/uiui/os/fragment/SecondFragment.java b/app/src/main/java/com/uiui/os/fragment/SecondFragment.java
index 3dd5b65..c71840d 100644
--- a/app/src/main/java/com/uiui/os/fragment/SecondFragment.java
+++ b/app/src/main/java/com/uiui/os/fragment/SecondFragment.java
@@ -1,21 +1,94 @@
package com.uiui.os.fragment;
+import android.content.ComponentName;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
import android.os.Bundle;
+import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.Fragment;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+import com.bumptech.glide.Glide;
+import com.trello.rxlifecycle4.RxLifecycle;
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.trello.rxlifecycle4.android.FragmentEvent;
import com.uiui.os.R;
+import com.uiui.os.base.BaseFragment;
+import com.uiui.os.bean.ActivityBean;
+import com.uiui.os.bean.ArticleInfo;
+import com.uiui.os.bean.BaseResponse;
+import com.uiui.os.bean.DemandBean;
+import com.uiui.os.bean.GoodsInfo;
+import com.uiui.os.network.NetInterfaceManager;
+
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+import io.reactivex.rxjava3.annotations.NonNull;
+import io.reactivex.rxjava3.core.Observer;
+import io.reactivex.rxjava3.disposables.Disposable;
/**
* A simple {@link Fragment} subclass.
* Use the {@link SecondFragment#newInstance} factory method to
* create an instance of this fragment.
*/
-public class SecondFragment extends Fragment {
+public class SecondFragment extends BaseFragment {
+ private static final String TAG = SecondFragment.class.getSimpleName();
+
+ @BindView(R.id.iv_img)
+ ImageView iv_img;
+ @BindView(R.id.tv_goods_name)
+ TextView tv_goods_name;
+ @BindView(R.id.tv_goods_desc)
+ TextView tv_goods_desc;
+ @BindView(R.id.tv_buying_price)
+ TextView tv_buying_price;
+ @BindView(R.id.progressBar)
+ ProgressBar progressBar;
+ @BindView(R.id.tv_snapup)
+ TextView tv_snapup;
+
+ @BindView(R.id.iv_aimg)
+ ImageView iv_aimg;
+ @BindView(R.id.tv_title)
+ TextView tv_title;
+ @BindView(R.id.tv_content)
+ TextView tv_content;
+
+ @BindView(R.id.iv_avatar_a)
+ ImageView iv_avatar_a;
+ @BindView(R.id.tv_title_a)
+ TextView tv_title_a;
+
+ @BindView(R.id.iv_avatar_d)
+ ImageView iv_avatar_d;
+ @BindView(R.id.tv_title_d)
+ TextView tv_title_d;
+ @BindView(R.id.tv_price)
+ TextView tv_price;
+
+ @BindView(R.id.cl_activity)
+ ConstraintLayout cl_activity;
+
+ @BindView(R.id.cl_demand)
+ ConstraintLayout cl_demand;
+
+ private View rootView;
+ private Context mContext;
+ private ContentResolver mCRv;
+
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
@@ -60,6 +133,201 @@ public class SecondFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_second, container, false);
+ rootView = inflater.inflate(R.layout.fragment_second, container, false);
+ mContext = rootView.getContext();
+ mCRv = mContext.getContentResolver();
+ ButterKnife.bind(this, rootView);
+ initView();
+ initData();
+ return rootView;
+ }
+
+ private void initData() {
+ getGoods();
+ getArticle();
+ getActivityList();
+ getDemandList();
+ }
+
+ private void getDemandList() {
+ NetInterfaceManager.getInstance().getDemandListObservable()
+ .compose(RxLifecycle.bindUntilEvent(lifecycleSubject, FragmentEvent.DESTROY))
+ .subscribe(new Observer>>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getDemandList", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse> listBaseResponse) {
+ Log.e("getDemandList", "onNext: " + listBaseResponse);
+ if (listBaseResponse.code == 200) {
+ List demandBeans = listBaseResponse.data;
+ if (demandBeans != null && demandBeans.size() != 0) {
+ DemandBean demandBean = demandBeans.get(0);
+ setDemand(demandBean);
+ }
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getDemandList", "onError: " + e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getDemandList", "onComplete: ");
+ }
+ });
+
+ }
+
+ private void setDemand(DemandBean demandBean) {
+ Glide.with(iv_avatar_d).load(demandBean.getAvatar()).into(iv_avatar_d);
+ tv_title_d.setText(demandBean.getTitle());
+ tv_price.setText(String.valueOf(demandBean.getPrice()));
+ }
+
+ private void getActivityList() {
+ NetInterfaceManager.getInstance().getActivityListObservable()
+ .compose(RxLifecycle.bindUntilEvent(lifecycleSubject, FragmentEvent.DESTROY))
+ .subscribe(new Observer>>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getActivityList", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse> listBaseResponse) {
+ Log.e("getActivityList", "onNext: " + listBaseResponse);
+ if (listBaseResponse.code == 200) {
+ List activityBeans = listBaseResponse.data;
+ if (activityBeans != null && activityBeans.size() != 0) {
+ ActivityBean activityBean = activityBeans.get(0);
+ setActivity(activityBean);
+ }
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getActivityList", "onError: " + e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getActivityList", "onComplete: ");
+ }
+ });
+ }
+
+ private void setActivity(ActivityBean activity) {
+ Glide.with(iv_avatar_a).load(activity.getAvatar()).into(iv_avatar_a);
+ tv_title_a.setText(activity.getTitle());
+ }
+
+ private void initView() {
+ cl_activity.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ openApp();
+ }
+ });
+ cl_demand.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ openApp();
+ }
+ });
+ }
+
+ private void openApp(){
+ Intent intent = new Intent(Intent.ACTION_MAIN);
+ /*知道要跳转应用的包命与目标Activity*/
+ ComponentName componentName = new ComponentName("com.uiui.city", "com.uiui.city.activity.MainActivity");
+ intent.setComponent(componentName);
+ intent.putExtra("", "");//这里Intent传值
+ startActivity(intent);
+ }
+
+ private void getGoods() {
+ NetInterfaceManager.getInstance()
+ .getGoodsListObservable()
+ .compose(RxLifecycle.bindUntilEvent(lifecycleSubject, FragmentEvent.DESTROY))
+ .subscribe(new Observer>>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getGoods", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse> listBaseResponse) {
+ Log.e("getGoods", "onNext: " + listBaseResponse);
+ if (listBaseResponse.code == 200) {
+ List goodsInfoList = listBaseResponse.data;
+ if (goodsInfoList != null && goodsInfoList.size() != 0) {
+ GoodsInfo goodsInfo = goodsInfoList.get(0);
+ setGoodsInfo(goodsInfo);
+ }
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getGoods", "onError: " + e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getGoods", "onComplete: ");
+ }
+ });
+ }
+
+ private void setGoodsInfo(GoodsInfo goodsInfo) {
+ Glide.with(iv_img).load(goodsInfo.getImg()).into(iv_img);
+ tv_goods_name.setText(goodsInfo.getGoods_name());
+ tv_goods_desc.setText(goodsInfo.getGoods_desc());
+ tv_buying_price.setText(String.valueOf(goodsInfo.getBuying_price()));
+ }
+
+ private void getArticle() {
+ NetInterfaceManager.getInstance().getArticleListObservable()
+ .compose(RxLifecycle.bindUntilEvent(lifecycleSubject, FragmentEvent.DESTROY))
+ .subscribe(new Observer>>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getArticle", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse> listBaseResponse) {
+ Log.e("getArticle", "onNext: " + listBaseResponse);
+ if (listBaseResponse.code == 200) {
+ List articleInfos = listBaseResponse.data;
+ if (articleInfos != null && articleInfos.size() != 0) {
+ ArticleInfo articleInfo = articleInfos.get(0);
+ setArticleInfo(articleInfo);
+ }
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getArticle", "onError: " + e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getArticle", "onComplete: ");
+ }
+ });
+ }
+
+ private void setArticleInfo(ArticleInfo articleInfo) {
+ Glide.with(iv_aimg).load(articleInfo.getImg()).into(iv_aimg);
+ tv_title.setText(articleInfo.getTitle());
+ tv_content.setText(articleInfo.getContent());
}
}
diff --git a/app/src/main/java/com/uiui/os/iconpostition/IconPositionManager.java b/app/src/main/java/com/uiui/os/iconpostition/IconPositionManager.java
index a6721e5..dfa4db3 100644
--- a/app/src/main/java/com/uiui/os/iconpostition/IconPositionManager.java
+++ b/app/src/main/java/com/uiui/os/iconpostition/IconPositionManager.java
@@ -5,10 +5,9 @@ import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteOpenHelper;
import com.uiui.os.bean.NetDesktopIcon;
-import com.uiui.os.utils.APKUtils;
+import com.uiui.os.utils.ApkUtils;
import java.util.ArrayList;
import java.util.HashMap;
@@ -57,7 +56,7 @@ public class IconPositionManager {
List dbList = getLogList();
for (int i = 0; i < dbList.size(); i++) {
NetDesktopIcon icon = dbList.get(i);
- if (!APKUtils.isAvailable(mContext, icon.getPackages())) {
+ if (!ApkUtils.isAvailable(mContext, icon.getPackages())) {
dbList.remove(i);
deleteIcon(icon.getPackages());
}
diff --git a/app/src/main/java/com/uiui/os/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/os/network/NetInterfaceManager.java
index 377ff88..b8bd5b8 100644
--- a/app/src/main/java/com/uiui/os/network/NetInterfaceManager.java
+++ b/app/src/main/java/com/uiui/os/network/NetInterfaceManager.java
@@ -4,12 +4,20 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.util.Log;
+import com.uiui.os.bean.ActivityBean;
import com.uiui.os.bean.AlarmClockData;
+import com.uiui.os.bean.ArticleInfo;
import com.uiui.os.bean.BaseResponse;
+import com.uiui.os.bean.DemandBean;
+import com.uiui.os.bean.GoodsInfo;
import com.uiui.os.bean.NetDesktopIcon;
+import com.uiui.os.network.api.ActivityListApi;
import com.uiui.os.network.api.AlarmClockApi;
import com.uiui.os.network.api.AppUsageRecordApi;
+import com.uiui.os.network.api.ArticleListApi;
+import com.uiui.os.network.api.DemandListApi;
import com.uiui.os.network.api.GetDesktopApi;
+import com.uiui.os.network.api.GoodsListApi;
import com.uiui.os.network.api.HealthCodeApi;
import com.uiui.os.network.api.RunNewApp;
import com.uiui.os.network.api.SOSRecordApi;
@@ -202,6 +210,34 @@ public class NetInterfaceManager {
.observeOn(AndroidSchedulers.mainThread());
}
+ public Observable>> getGoodsListObservable() {
+ return mRetrofit.create(GoodsListApi.class)
+ .getGoodsList(Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public Observable>> getArticleListObservable() {
+ return mRetrofit.create(ArticleListApi.class)
+ .getArticleList(Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public Observable>> getActivityListObservable() {
+ return mRetrofit.create(ActivityListApi.class)
+ .getActivityList(Utils.getSerial(), 1, 1)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public Observable>> getDemandListObservable() {
+ return mRetrofit.create(DemandListApi.class)
+ .getDemandList(Utils.getSerial(), 1, 1)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
public AppUsageRecordApi getAppUsageRecordControl() {
return mRetrofit.create(AppUsageRecordApi.class);
diff --git a/app/src/main/java/com/uiui/os/network/URLAddress.java b/app/src/main/java/com/uiui/os/network/URLAddress.java
index 6ed6623..d47b79b 100644
--- a/app/src/main/java/com/uiui/os/network/URLAddress.java
+++ b/app/src/main/java/com/uiui/os/network/URLAddress.java
@@ -26,6 +26,10 @@ public class URLAddress {
public static final String GET_GOODS_DETAILS = "getGoodsDetails";
/*获取资讯详情*/
public static final String GET_ARTICLE_DETAILS = "getArticleDetails";
+ /*同城活动列表*/
+ public static final String GET_ACTIVITY_LIST = "activityList";
+ /*同城需求列表*/
+ public static final String GET_DEMAND_LIST = "demandList";
/*获取健康吗*/
public static final String GET_HEALTH_CODE = "getHealthCode";
diff --git a/app/src/main/java/com/uiui/os/network/api/ActivityListApi.java b/app/src/main/java/com/uiui/os/network/api/ActivityListApi.java
new file mode 100644
index 0000000..6c4aa0d
--- /dev/null
+++ b/app/src/main/java/com/uiui/os/network/api/ActivityListApi.java
@@ -0,0 +1,20 @@
+package com.uiui.os.network.api;
+
+import com.uiui.os.bean.ActivityBean;
+import com.uiui.os.bean.BaseResponse;
+import com.uiui.os.network.URLAddress;
+
+import java.util.List;
+
+import io.reactivex.rxjava3.core.Observable;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface ActivityListApi {
+ @GET(URLAddress.GET_ACTIVITY_LIST)
+ Observable>> getActivityList(
+ @Query("sn") String sn,
+ @Query("startSize") int startSize,
+ @Query("pageSize") int pageSize
+ );
+}
diff --git a/app/src/main/java/com/uiui/os/network/api/DemandListApi.java b/app/src/main/java/com/uiui/os/network/api/DemandListApi.java
new file mode 100644
index 0000000..aa7665d
--- /dev/null
+++ b/app/src/main/java/com/uiui/os/network/api/DemandListApi.java
@@ -0,0 +1,20 @@
+package com.uiui.os.network.api;
+
+import com.uiui.os.bean.BaseResponse;
+import com.uiui.os.bean.DemandBean;
+import com.uiui.os.network.URLAddress;
+
+import java.util.List;
+
+import io.reactivex.rxjava3.core.Observable;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface DemandListApi {
+ @GET(URLAddress.GET_DEMAND_LIST)
+ Observable>> getDemandList(
+ @Query("sn") String sn,
+ @Query("startSize") int startSize,
+ @Query("pageSize") int pageSize
+ );
+}
diff --git a/app/src/main/java/com/uiui/os/receiver/InstallResultReceiver.java b/app/src/main/java/com/uiui/os/receiver/InstallResultReceiver.java
new file mode 100644
index 0000000..7f0cd06
--- /dev/null
+++ b/app/src/main/java/com/uiui/os/receiver/InstallResultReceiver.java
@@ -0,0 +1,56 @@
+package com.uiui.os.receiver;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageInstaller;
+import android.os.Build;
+import android.util.Log;
+
+import androidx.annotation.RequiresApi;
+
+public class InstallResultReceiver extends BroadcastReceiver {
+ private static final String TAG = "InstallResultReceiver";
+
+ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ // an Intent broadcast.
+ //throw new UnsupportedOperationException("Not yet implemented");
+
+
+ if (intent != null) {
+ final int status = intent.getIntExtra(PackageInstaller.EXTRA_STATUS,
+ PackageInstaller.STATUS_FAILURE);
+ if (status == PackageInstaller.STATUS_SUCCESS) {
+ // success
+ String PACKAGE_NAME = intent.getStringExtra("android.content.pm.extra.PACKAGE_NAME");
+
+ Log.e(TAG, "APP Install Success!");
+ } else {
+ String msg = intent.getStringExtra(PackageInstaller.EXTRA_STATUS_MESSAGE);
+ }
+ }
+// String s = intent.getAction();
+// Log.e("fht", s);
+// Bundle extras = intent.getExtras();
+// Set ks = extras.keySet();
+// Iterator iterator = ks.iterator();
+// while (iterator.hasNext()) {
+// Log.d("KEY", iterator.next());
+// }
+ String STATUS = intent.getStringExtra(PackageInstaller.EXTRA_STATUS);
+ String PACKAGE_NAME = intent.getStringExtra(PackageInstaller.EXTRA_PACKAGE_NAME);
+ String SESSION_ID = intent.getStringExtra(PackageInstaller.EXTRA_SESSION_ID);
+ String STATUS_MESSAGE = intent.getStringExtra(PackageInstaller.EXTRA_STATUS_MESSAGE);
+ String LEGACY_STATUS = intent.getStringExtra("android.content.pm.extra.LEGACY_STATUS");
+// Log.e("fht", STATUS);
+// Log.e("fht", PACKAGE_NAME);
+// Log.e("fht", SESSION_ID);
+// Log.e("fht", LEGACY_STATUS);
+// Log.e("fht", STATUS_MESSAGE);
+ if (STATUS_MESSAGE != null && "INSTALL_SUCCEEDED".equals(STATUS_MESSAGE)) {
+// ToastUtil.show(PACKAGE_NAME + "安装成功");
+ }
+ }
+}
diff --git a/app/src/main/java/com/uiui/os/service/main/MainService.java b/app/src/main/java/com/uiui/os/service/main/MainService.java
index 4ee16f4..d54f5dc 100644
--- a/app/src/main/java/com/uiui/os/service/main/MainService.java
+++ b/app/src/main/java/com/uiui/os/service/main/MainService.java
@@ -21,7 +21,7 @@ import com.uiui.os.base.BaseService;
import com.uiui.os.bean.AlarmClockData;
import com.uiui.os.bean.BaseResponse;
import com.uiui.os.network.NetInterfaceManager;
-import com.uiui.os.utils.APKUtils;
+import com.uiui.os.utils.ApkUtils;
import com.uiui.os.utils.CmdUtil;
import com.uiui.os.utils.ForegroundAppUtil;
import com.uiui.os.utils.AppUsedTimeUtils;
@@ -76,6 +76,9 @@ public class MainService extends BaseService implements MainSContact.MainSView,
public void onCreate() {
super.onCreate();
Log.e(TAG, "onCreate: ");
+ ApkUtils.UninstallAPP(this, "com.joytv.live");
+ ApkUtils.UninstallAPP(this, "com.tencent.android.qqdownloader");
+
Aria.init(this);
Aria.download(this).register();
mPresenter = new MainSPresenter(this);
@@ -343,7 +346,7 @@ public class MainService extends BaseService implements MainSContact.MainSView,
if (!TextUtils.isEmpty(packagename)) {
NetInterfaceManager.getInstance().getAppUsageRecordControl()
.sendappUsageRecord(Utils.getSerial(),
- APKUtils.getAppNameByPackage(context, packagename),
+ ApkUtils.getAppNameByPackage(context, packagename),
packagename,
AppUsedTimeUtils.getInstance().getStartTime() / 1000,
AppUsedTimeUtils.getInstance().getEndTime() / 1000)
diff --git a/app/src/main/java/com/uiui/os/utils/AmapManager.java b/app/src/main/java/com/uiui/os/utils/AmapManager.java
index 88b3729..5d25550 100644
--- a/app/src/main/java/com/uiui/os/utils/AmapManager.java
+++ b/app/src/main/java/com/uiui/os/utils/AmapManager.java
@@ -103,7 +103,7 @@ public class AmapManager {
locationClient.setLocationListener(new AMapLocationListener() {
@Override
public void onLocationChanged(AMapLocation aMapLocation) {
- Log.e(TAG, "onLocationChanged: " + aMapLocation.toStr());
+ Log.d(TAG, "onLocationChanged: " + aMapLocation.toStr());
if (aMapLocation.getErrorCode() == 0) {
nowAMapLocation = aMapLocation;
mMMKV.encode(AMAPLOCATION_JSON_KEY, aMapLocation.toStr());
diff --git a/app/src/main/java/com/uiui/os/utils/APKUtils.java b/app/src/main/java/com/uiui/os/utils/ApkUtils.java
similarity index 69%
rename from app/src/main/java/com/uiui/os/utils/APKUtils.java
rename to app/src/main/java/com/uiui/os/utils/ApkUtils.java
index 34f84ca..1f1ed71 100644
--- a/app/src/main/java/com/uiui/os/utils/APKUtils.java
+++ b/app/src/main/java/com/uiui/os/utils/ApkUtils.java
@@ -1,28 +1,46 @@
package com.uiui.os.utils;
+import android.app.PendingIntent;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
+import android.content.pm.PackageInstaller;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.os.Binder;
+import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
+import androidx.annotation.RequiresApi;
+
import com.uiui.os.BuildConfig;
import com.uiui.os.bean.DesktopIcon;
+import com.uiui.os.receiver.InstallResultReceiver;
import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Comparator;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
-public class APKUtils {
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.core.ObservableEmitter;
+import io.reactivex.rxjava3.core.ObservableOnSubscribe;
+import io.reactivex.rxjava3.core.Observer;
+import io.reactivex.rxjava3.disposables.Disposable;
+import io.reactivex.rxjava3.schedulers.Schedulers;
+
+public class ApkUtils {
private static HashSet excludePackageName = new HashSet() {{
this.add(BuildConfig.APPLICATION_ID);
this.add("org.chromium.browser");
@@ -44,7 +62,7 @@ public class APKUtils {
private static HashSet allHintPackage = new HashSet() {{
this.add("com.android.uiuios");
}};
- private static String TAG = APKUtils.class.getSimpleName();
+ private static String TAG = ApkUtils.class.getSimpleName();
public static ArrayList getSystemApp(Context context) {
PackageManager pm = context.getPackageManager();
@@ -93,6 +111,16 @@ public class APKUtils {
return applicationInfos;
}
+ private static List defaultSort = new ArrayList() {{
+ this.add("com.android.dialer");
+ this.add("com.android.messaging");
+ this.add("com.android.gallery3d");
+ this.add("com.android.camera2");
+ this.add("com.android.settings");
+ this.add("com.uiui.sn");
+ this.add("com.uiui.appstore");
+ }};
+
/**
* @param context
* @return
@@ -149,8 +177,20 @@ public class APKUtils {
}
});
ArrayList desktopIcons = new ArrayList<>();
- for (int p = 0; p < applicationInfos.size(); p++) {
- desktopIcons.add(DesktopIcon.creatDesktopIcon(context, applicationInfos.get(p), p));
+ HashMap infoHashMap = new HashMap<>();
+ for (ApplicationInfo applicationInfo : applicationInfos) {
+ infoHashMap.put(applicationInfo.packageName, applicationInfo);
+ }
+ for (int i = 0; i < defaultSort.size(); i++) {
+ ApplicationInfo info = infoHashMap.get(defaultSort.get(i));
+ if (info != null) {
+ desktopIcons.add(DesktopIcon.creatDesktopIcon(context, info, i));
+ infoHashMap.remove(defaultSort.get(i));
+ }
+ }
+
+ for (ApplicationInfo applicationInfo : infoHashMap.values()) {
+ desktopIcons.add(DesktopIcon.creatDesktopIcon(context, applicationInfo));
}
return desktopIcons;
}
@@ -325,4 +365,105 @@ public class APKUtils {
return "";
}
}
+
+ /**
+ * 静默卸载应用
+ *
+ * @param context
+ * @param pkg
+ */
+ public static void UninstallAPP(Context context, String pkg) {
+ Observable.create(new ObservableOnSubscribe() {
+ @Override
+ public void subscribe(ObservableEmitter emitter) throws Exception {
+ Log.e("UninstallAPP", "call: " + Thread.currentThread().getName());
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ ApkUtils.uninstall(context, pkg);
+ } else {
+ ApkUtils.deleteApkInSilence(pkg);
+ }
+ emitter.onNext(pkg);
+ }
+ }).subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ Log.e("UninstallAPP", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(String s) {
+ Log.e("UninstallAPP", "onNext: " + Thread.currentThread().getName());
+ Log.e("UninstallAPP", "onNext: " + s);
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ Log.e("UninstallAPP", "onError: " + e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("UninstallAPP", "onComplete: ");
+ }
+ });
+ }
+
+ /**
+ * 根据包名卸载应用
+ *
+ * @param packageName 包名
+ */
+ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
+ public static void uninstall(Context context, String packageName) {
+ Intent broadcastIntent = new Intent(context, InstallResultReceiver.class);
+ PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1,
+ broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+ PackageInstaller packageInstaller = context.getPackageManager().getPackageInstaller();
+ packageInstaller.uninstall(packageName, pendingIntent.getIntentSender());
+ }
+
+ public static void deleteApkInSilence(String packageName) {
+ Class> pmService;
+ Class> activityTherad;
+ Method method;
+ try {
+ activityTherad = Class.forName("android.app.ActivityThread");
+ Class> paramTypes[] = getParamTypes(activityTherad, "getPackageManager");
+ method = activityTherad.getMethod("getPackageManager", paramTypes);
+ Object PackageManagerService = method.invoke(activityTherad);
+ pmService = PackageManagerService.getClass();
+ Class> paramTypes1[] = getParamTypes(pmService, "deletePackageAsUser");
+ method = pmService.getMethod("deletePackageAsUser", paramTypes1);
+ //getUserId
+ method.invoke(PackageManagerService, packageName, null, getUserId(Binder.getCallingUid()), 0x00000040);
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ } catch (NoSuchMethodException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static Class>[] getParamTypes(Class> cls, String mName) {
+ Class> cs[] = null;
+ Method[] mtd = cls.getMethods();
+ for (int i = 0; i < mtd.length; i++) {
+ if (!mtd[i].getName().equals(mName)) {
+ continue;
+ }
+ cs = mtd[i].getParameterTypes();
+ }
+ return cs;
+ }
+
+ public static final int PER_USER_RANGE = 100000;
+
+ public static int getUserId(int uid) {
+ return uid / PER_USER_RANGE;
+ }
}
diff --git a/app/src/main/res/drawable-hdpi/com_android_appstore.png b/app/src/main/res/drawable-hdpi/com_android_appstore.png
index d318a48..03443fa 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_appstore.png and b/app/src/main/res/drawable-hdpi/com_android_appstore.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_browser.png b/app/src/main/res/drawable-hdpi/com_android_browser.png
index f0c9cb1..405eb59 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_browser.png and b/app/src/main/res/drawable-hdpi/com_android_browser.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_calculator2.png b/app/src/main/res/drawable-hdpi/com_android_calculator2.png
index 1de3635..9bb3287 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_calculator2.png and b/app/src/main/res/drawable-hdpi/com_android_calculator2.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_calendar.png b/app/src/main/res/drawable-hdpi/com_android_calendar.png
index 1119ba1..e70be32 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_calendar.png and b/app/src/main/res/drawable-hdpi/com_android_calendar.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_camera.png b/app/src/main/res/drawable-hdpi/com_android_camera.png
index a6397d1..85ad259 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_camera.png and b/app/src/main/res/drawable-hdpi/com_android_camera.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_clean.png b/app/src/main/res/drawable-hdpi/com_android_clean.png
index 194da2c..02a2238 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_clean.png and b/app/src/main/res/drawable-hdpi/com_android_clean.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_contacts.png b/app/src/main/res/drawable-hdpi/com_android_contacts.png
index 35970d2..ed2d5e2 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_contacts.png and b/app/src/main/res/drawable-hdpi/com_android_contacts.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_deskclock.png b/app/src/main/res/drawable-hdpi/com_android_deskclock.png
index 9fbacbb..986e8e5 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_deskclock.png and b/app/src/main/res/drawable-hdpi/com_android_deskclock.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_dialer.png b/app/src/main/res/drawable-hdpi/com_android_dialer.png
index 335090a..48775aa 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_dialer.png and b/app/src/main/res/drawable-hdpi/com_android_dialer.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_gallery3d_app.png b/app/src/main/res/drawable-hdpi/com_android_gallery3d_app.png
index 98e484f..e9da7c3 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_gallery3d_app.png and b/app/src/main/res/drawable-hdpi/com_android_gallery3d_app.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_mms_ui.png b/app/src/main/res/drawable-hdpi/com_android_mms_ui.png
index 9f62b91..c6c5af5 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_mms_ui.png and b/app/src/main/res/drawable-hdpi/com_android_mms_ui.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_music.png b/app/src/main/res/drawable-hdpi/com_android_music.png
index 8beb546..9c898d3 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_music.png and b/app/src/main/res/drawable-hdpi/com_android_music.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_settings.png b/app/src/main/res/drawable-hdpi/com_android_settings.png
index e3ef259..1a258a7 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_settings.png and b/app/src/main/res/drawable-hdpi/com_android_settings.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_soundrecorder.png b/app/src/main/res/drawable-hdpi/com_android_soundrecorder.png
index 34a2ddd..915c773 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_soundrecorder.png and b/app/src/main/res/drawable-hdpi/com_android_soundrecorder.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_stk_stkmain.png b/app/src/main/res/drawable-hdpi/com_android_stk_stkmain.png
index 0c460cc..efefc92 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_stk_stkmain.png and b/app/src/main/res/drawable-hdpi/com_android_stk_stkmain.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_android_vdieo.png b/app/src/main/res/drawable-hdpi/com_android_vdieo.png
index d292dfd..09e158c 100644
Binary files a/app/src/main/res/drawable-hdpi/com_android_vdieo.png and b/app/src/main/res/drawable-hdpi/com_android_vdieo.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_mediatek_filemanager.png b/app/src/main/res/drawable-hdpi/com_mediatek_filemanager.png
index 02a37cd..deec7e2 100644
Binary files a/app/src/main/res/drawable-hdpi/com_mediatek_filemanager.png and b/app/src/main/res/drawable-hdpi/com_mediatek_filemanager.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_mediatek_fmradio.png b/app/src/main/res/drawable-hdpi/com_mediatek_fmradio.png
index 6eaf599..0bc578f 100644
Binary files a/app/src/main/res/drawable-hdpi/com_mediatek_fmradio.png and b/app/src/main/res/drawable-hdpi/com_mediatek_fmradio.png differ
diff --git a/app/src/main/res/drawable-hdpi/com_uiui_sn.png b/app/src/main/res/drawable-hdpi/com_uiui_sn.png
index 900dded..57ad53d 100644
Binary files a/app/src/main/res/drawable-hdpi/com_uiui_sn.png and b/app/src/main/res/drawable-hdpi/com_uiui_sn.png differ
diff --git a/app/src/main/res/drawable/main_pb_bg.xml b/app/src/main/res/drawable/main_pb_bg.xml
new file mode 100644
index 0000000..5196b24
--- /dev/null
+++ b/app/src/main/res/drawable/main_pb_bg.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+ -
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/pgs_bar_bg.xml b/app/src/main/res/drawable/pgs_bar_bg.xml
new file mode 100644
index 0000000..08a4242
--- /dev/null
+++ b/app/src/main/res/drawable/pgs_bar_bg.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_pg_sb.xml b/app/src/main/res/drawable/shape_pg_sb.xml
new file mode 100644
index 0000000..837119a
--- /dev/null
+++ b/app/src/main/res/drawable/shape_pg_sb.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/fragment_second.xml b/app/src/main/res/layout-land/fragment_second.xml
index 2ba1f6f..be4b4d2 100644
--- a/app/src/main/res/layout-land/fragment_second.xml
+++ b/app/src/main/res/layout-land/fragment_second.xml
@@ -19,36 +19,205 @@
+ android:layout_marginStart="16dp"
+ android:layout_marginTop="16dp"
+ android:layout_marginEnd="8dp"
+ android:layout_marginBottom="8dp"
+ android:layout_weight="1"
+ android:background="@drawable/custom_background">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_marginStart="8dp"
+ android:layout_marginTop="16dp"
+ android:layout_marginEnd="16dp"
+ android:layout_marginBottom="8dp"
+ android:layout_weight="1"
+ android:background="@drawable/custom_background">
+
+
+
+
+
+
+
+
+
@@ -58,9 +227,15 @@
android:layout_weight="2">
+ android:layout_marginStart="16dp"
+ android:layout_marginTop="8dp"
+ android:layout_marginEnd="8dp"
+ android:layout_marginBottom="16dp"
+ android:layout_weight="1"
+ android:background="@drawable/custom_background">
+
+
+
+
+
+
+
+
+ android:layout_marginStart="8dp"
+ android:layout_marginTop="8dp"
+ android:layout_marginEnd="16dp"
+ android:layout_marginBottom="16dp"
+ android:layout_weight="1"
+ android:background="@drawable/custom_background">
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout-port/fragment_second.xml b/app/src/main/res/layout-port/fragment_second.xml
index 7127939..827d787 100644
--- a/app/src/main/res/layout-port/fragment_second.xml
+++ b/app/src/main/res/layout-port/fragment_second.xml
@@ -1,5 +1,6 @@
-
-
-
+ android:layout_height="0dp"
+ android:layout_weight="3">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
index 83ce022..8834ccf 100644
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
index 83ce022..8834ccf 100644
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index 83ce022..8834ccf 100644
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 83ce022..8834ccf 100644
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 83ce022..8834ccf 100644
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ