diff --git a/app/build.gradle b/app/build.gradle
index 8ada73c..540c4e9 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -15,10 +15,10 @@ android {
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.appstore.uiui"
- minSdkVersion 23
+ minSdkVersion 24
targetSdkVersion 29
- versionCode 31
- versionName "1.3.1"
+ versionCode 35
+ versionName "1.3.5"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
//极光
ndk {
@@ -38,6 +38,14 @@ android {
}
//签名
signingConfigs {
+ zhanRui {
+ storeFile file("src/keys/zhanxun.keystore")
+ storePassword "123456"
+ keyAlias "zhanxun"
+ keyPassword "123456"
+ v1SigningEnabled true
+ v2SigningEnabled true
+ }
debug {
storeFile file("src/keys/xueshibaoos.jks")
storePassword "123456"
@@ -55,9 +63,21 @@ android {
}
buildTypes {
+ zhanRuiRelease.initWith(release)
+ zhanRuiRelease {
+ buildConfigField "String", "platform", '"ZhanRui"'
+ signingConfig signingConfigs.zhanRui
+ }
+
+ zhanRuiDebug.initWith(debug)
+ zhanRuiDebug {
+ versionNameSuffix "-debug"
+ buildConfigField "String", "platform", '"ZhanRui"'
+ debuggable true
+ signingConfig signingConfigs.zhanRui
+ }
debug {
- // 显示Log
- buildConfigField "boolean", "LOG_DEBUG", "true"
+ buildConfigField "String", "platform", '"MTK"'
versionNameSuffix "-debug"
minifyEnabled false
//Zipalign优化
@@ -66,15 +86,14 @@ android {
applicationVariants.all { variant ->
variant.outputs.each { output ->
if (outputFile != null) {
- def fileName = "${appName()}-V${defaultConfig.versionName}-${releaseTime()}.apk"
+ def fileName = "${appName()}-${variant.versionCode}-V${variant.versionName}-${releaseTime()}-${buildType.name}.apk"
output.outputFileName = fileName
}
}
}
}
release {
- // 不显示Log
- buildConfigField "boolean", "LOG_DEBUG", "false"
+ buildConfigField "String", "platform", '"MTK"'
//混淆
minifyEnabled false
//Zipalign优化
@@ -88,9 +107,8 @@ android {
variant.outputs.each { output ->
def outputFile = ""
if (outputFile != null) {
- def fileName = "${appName()}-${defaultConfig.versionCode}-V${defaultConfig.versionName}-${releaseTime()}.apk"
+ def fileName = "${appName()}-${variant.versionCode}-V${variant.versionName}-${releaseTime()}-${buildType.name}.apk"
output.outputFileName = new File(outputFile, fileName)
-
}
}
}
diff --git a/app/src/keys/zhanxun.keystore b/app/src/keys/zhanxun.keystore
new file mode 100644
index 0000000..7c46fbc
Binary files /dev/null and b/app/src/keys/zhanxun.keystore differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cd61141..bf7d8f1 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,6 +3,8 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.appstore.uiui"
android:sharedUserId="android.uid.system">
+
+
@@ -23,7 +25,7 @@
list = new ArrayList() {{
- this.add(appInfo.getApp_preview1());
- this.add(appInfo.getApp_preview2());
- this.add(appInfo.getApp_preview3());
- }};
- imageAdapter = new ImageAdapter(list);
- rv_image.setAdapter(imageAdapter);
rv_image.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
CustomSnapHelper snapHelper = new CustomSnapHelper();
snapHelper.attachToRecyclerView(rv_image);
+ setImage(appInfo);
final boolean installed = ApkUtils.isInstalled(DetailsActivity.this, appInfo.getApp_package());
final boolean update = ApkUtils.isUpdate(DetailsActivity.this, appInfo.getApp_package(), appInfo.getApp_version_code());
if (installed) {
@@ -163,6 +173,72 @@ public class DetailsActivity extends BaseActivity {
});
}
+ private void setImage(final AppInfo info) {
+ List list = new ArrayList() {{
+ this.add(info.getApp_preview1());
+ this.add(info.getApp_preview2());
+ this.add(info.getApp_preview3());
+ }};
+ imageAdapter = new ImageAdapter();
+ imageAdapter.setData(list);
+ rv_image.setAdapter(imageAdapter);
+
+ }
+
+
+ void getPackageApp(String packageName, long versionCode) {
+ NetInterfaceManager.getInstance()
+ .getQueryPackageAppControl()
+ .getPackageApp(packageName, versionCode)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ Log.e(TAG, "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(BaseResponse appInfoBaseResponse) {
+ if (appInfoBaseResponse.code == 200) {
+ AppInfo info = appInfoBaseResponse.data;
+ boolean haveImage = false;
+ if (!TextUtils.isEmpty(info.getApp_preview1())) {
+ appInfo.setApp_preview1(info.getApp_preview1());
+ haveImage = true;
+ }
+ if (!TextUtils.isEmpty(info.getApp_preview2())) {
+ appInfo.setApp_preview2(info.getApp_preview2());
+ haveImage = true;
+ }
+ if (!TextUtils.isEmpty(info.getApp_preview3())) {
+ appInfo.setApp_preview3(info.getApp_preview3());
+ haveImage = true;
+ }
+ appInfo.setApp_version_name(info.getApp_version_name());
+ if (haveImage) {
+ scrollView.setVisibility(View.VISIBLE);
+ } else {
+ scrollView.setVisibility(View.GONE);
+ }
+ setImage(appInfo);
+ } else {
+ scrollView.setVisibility(View.GONE);
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ Log.e(TAG, "onError: " + e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e(TAG, "onComplete: ");
+ }
+ });
+ }
+
void refresh(DownloadTask task) {
if (appInfo.getApp_url().equals(task.getEntity().getUrl())) {
switch (task.getState()) {
diff --git a/app/src/main/java/com/appstore/uiui/activity/LocalManagerActivity.java b/app/src/main/java/com/appstore/uiui/activity/LocalManagerActivity.java
index bb1bed7..1bc480f 100644
--- a/app/src/main/java/com/appstore/uiui/activity/LocalManagerActivity.java
+++ b/app/src/main/java/com/appstore/uiui/activity/LocalManagerActivity.java
@@ -11,6 +11,7 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.provider.Settings;
import android.view.View;
import android.widget.ImageView;
@@ -19,6 +20,7 @@ import com.appstore.uiui.adapter.LocalAppAdapter;
import com.appstore.uiui.base.BaseActivity;
import com.appstore.uiui.base.RefreshManager;
import com.appstore.uiui.bean.LocalApp;
+import com.appstore.uiui.utils.ApkUtils;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
@@ -80,7 +82,7 @@ public class LocalManagerActivity extends BaseActivity implements RefreshManager
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List resolveInfoList = getApplication().getPackageManager().queryIntentActivities(intent, 0);
-
+ String qch_force_app = Settings.System.getString(getContentResolver(), "qch_force_app");
for (int i = 0; i < resolveInfoList.size(); i++) {
LocalApp bean = new LocalApp();
bean.setAppName(resolveInfoList.get(i).loadLabel(getApplicationContext().getPackageManager()).toString());
@@ -88,10 +90,17 @@ public class LocalManagerActivity extends BaseActivity implements RefreshManager
if (packageName.equals(getApplicationContext().getPackageName()) || packageName.equals("com.android.uiuios")) {
continue;
}
+ if (ApkUtils.canremove_systemapp.contains(packageName)) {
+ continue;
+ }
bean.setPackageName(packageName);
Drawable icon = resolveInfoList.get(i).loadIcon(getApplicationContext().getPackageManager());
bean.setIcon(icon);
-
+ if (qch_force_app.contains(packageName)){
+ bean.setCanUnintall(false);
+ }else {
+ bean.setCanUnintall(true);
+ }
try {
PackageInfo packageInfo = getApplicationContext().getPackageManager().getPackageInfo(packageName, 0);
String versionCode = getApplicationContext().getPackageManager()
diff --git a/app/src/main/java/com/appstore/uiui/activity/MainActivity.java b/app/src/main/java/com/appstore/uiui/activity/MainActivity.java
index 2b1afdc..092897b 100644
--- a/app/src/main/java/com/appstore/uiui/activity/MainActivity.java
+++ b/app/src/main/java/com/appstore/uiui/activity/MainActivity.java
@@ -34,7 +34,7 @@ import com.appstore.uiui.fragment.ManageFragment;
import com.appstore.uiui.jpush.ExampleUtil;
import com.appstore.uiui.jpush.LocalBroadcastManager;
import com.appstore.uiui.jpush.TagAliasOperatorHelper;
-import com.appstore.uiui.network.NetWorkManager;
+import com.appstore.uiui.network.NetInterfaceManager;
import com.appstore.uiui.network.api.QueryAllApp;
import com.appstore.uiui.network.api.SNInfo;
import com.appstore.uiui.service.GuardService;
@@ -71,6 +71,7 @@ import static com.appstore.uiui.jpush.TagAliasOperatorHelper.TagAliasBean;
import static com.appstore.uiui.jpush.TagAliasOperatorHelper.sequence;
public class MainActivity extends BaseActivity {
+ private static final String TAG = MainActivity.class.getSimpleName();
private RelativeLayout search_layout;
private ImageView iv_download, iv_appicon;
private SlidingTabLayout mSlidingTabLayout;
@@ -82,7 +83,7 @@ public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- Log.e("MainActivity", "onCreate");
+ Log.e(TAG, "onCreate");
requestPermission();
registerMessageReceiver(); // used for receive msg
String rid = JPushInterface.getRegistrationID(getApplicationContext());
@@ -119,13 +120,13 @@ public class MainActivity extends BaseActivity {
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
- Log.e("MainActivity", "onConfigurationChanged");
+ Log.e(TAG, "onConfigurationChanged");
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
- Log.e("MainActivity", "onSaveInstanceState");
+ Log.e(TAG, "onSaveInstanceState");
}
@@ -379,9 +380,6 @@ public class MainActivity extends BaseActivity {
}
- private static final String TAG = "fanhuitong";
-
-
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
@@ -403,8 +401,7 @@ public class MainActivity extends BaseActivity {
synchronized private void getUserInfo() {
- final SNInfo userInfo = NetWorkManager.getuserInfoControl();
- userInfo.getUserinfo(Utils.getSerial())
+ NetInterfaceManager.getInstance().getuserInfoControl().getUserinfo(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer>() {
@@ -443,8 +440,7 @@ public class MainActivity extends BaseActivity {
private void getAllAppPackageName() {
- QueryAllApp allApp = NetWorkManager.getQueryAllAppControl();
- allApp.getAllApp(Utils.getSerial())
+ NetInterfaceManager.getInstance().getQueryAllAppControl().getAllApp(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer>>() {
diff --git a/app/src/main/java/com/appstore/uiui/activity/SearcherActivity.java b/app/src/main/java/com/appstore/uiui/activity/SearcherActivity.java
index 47fcbd4..8669b98 100644
--- a/app/src/main/java/com/appstore/uiui/activity/SearcherActivity.java
+++ b/app/src/main/java/com/appstore/uiui/activity/SearcherActivity.java
@@ -1,13 +1,17 @@
package com.appstore.uiui.activity;
-import android.graphics.Color;
import android.os.Handler;
import android.os.Message;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.KeyEvent;
import android.view.View;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
import android.widget.TextView;
import androidx.annotation.NonNull;
-import androidx.appcompat.widget.SearchView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -15,17 +19,28 @@ import com.appstore.uiui.R;
import com.appstore.uiui.adapter.AppAdapter;
import com.appstore.uiui.base.BaseActivity;
import com.appstore.uiui.bean.AppInfo;
-import com.appstore.uiui.utils.LogUtils;
+import com.appstore.uiui.bean.BaseResponse;
+import com.appstore.uiui.network.NetInterfaceManager;
+import com.appstore.uiui.network.api.QueryAllApp;
+import com.appstore.uiui.network.api.SearchApp;
+import com.appstore.uiui.utils.Utils;
import java.util.ArrayList;
import java.util.List;
+import io.reactivex.Observer;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+
public class SearcherActivity extends BaseActivity {
- private SearchView search;
+ private String TAG = SearcherActivity.class.getSimpleName();
+ // private SearchView search;
private List mAppInfoList = new ArrayList<>();
private RecyclerView recyclerView;
private AppAdapter madapter;
+ private EditText edit_search;
@Override
protected int setLayoutResourceID() {
@@ -35,17 +50,21 @@ public class SearcherActivity extends BaseActivity {
@Override
protected void initView() {
- search = findViewById(R.id.search);
+// search = findViewById(R.id.search);
// int id = search.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
- TextView textView = search.findViewById(androidx.appcompat.R.id.search_src_text);
- textView.setTextColor(Color.BLACK);
- textView.setHintTextColor(Color.GRAY);//提示字体颜色**
+// TextView textView = search.findViewById(androidx.appcompat.R.id.search_src_text);
+// textView.setTextColor(Color.BLACK);
+// textView.setHintTextColor(Color.GRAY);//提示字体颜色**
+ edit_search = findViewById(R.id.edit_search);
+ edit_search.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
+ edit_search.setInputType(EditorInfo.TYPE_CLASS_TEXT);
+
recyclerView = findViewById(R.id.recyclerView);
}
@Override
protected void initData() {
- madapter = new AppAdapter(mAppInfoList, SearcherActivity.this);
+ madapter = new AppAdapter(mAppInfoList, SearcherActivity.this);
madapter.setHasStableIds(true);
recyclerView.setAdapter(madapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
@@ -53,23 +72,113 @@ public class SearcherActivity extends BaseActivity {
@Override
protected void setListener() {
- search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
+// search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
+// @Override
+// public boolean onQueryTextSubmit(String query) {
+// LogUtils.e("icon_serach", query);
+//// OKGO.searchAppbyName(handler, query);
+// return false;
+// }
+//
+// @Override
+// public boolean onQueryTextChange(String newText) {
+// madapter.setData(new ArrayList());
+// madapter.notifyDataSetChanged();
+// return false;
+// }
+// });
+ edit_search.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
- public boolean onQueryTextSubmit(String query) {
- LogUtils.e("icon_serach", query);
-// OKGO.searchAppbyName(handler, query);
- return false;
- }
-
- @Override
- public boolean onQueryTextChange(String newText) {
- madapter.setData(new ArrayList());
- madapter.notifyDataSetChanged();
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ if (actionId == EditorInfo.IME_ACTION_SEND || (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
+ //do something;
+ ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
+ .hideSoftInputFromWindow(SearcherActivity.this.getCurrentFocus()
+ .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
+ String text = edit_search.getText().toString();
+ if (TextUtils.isEmpty(text)) {
+ getAllAppPackageName();
+ } else {
+ searcheApp(text);
+ }
+ return true;
+ }
return false;
}
});
}
+ private void searcheApp(String text) {
+ NetInterfaceManager.getInstance()
+ .getSearchAppControl()
+ .getApp(Utils.getSerial(), text)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+
+ }
+
+ @Override
+ public void onNext(BaseResponse> listBaseResponse) {
+ if (listBaseResponse.code == 200) {
+ List appInfos = listBaseResponse.data;
+ if (appInfos != null && appInfos.size() > 0) {
+ madapter.setData(listBaseResponse.data);
+ }
+ } else {
+ madapter.setData(new ArrayList());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+
+ private void getAllAppPackageName() {
+ NetInterfaceManager.getInstance().getQueryAllAppControl().getAllApp(Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer>>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ Log.e(TAG, "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(BaseResponse> listBaseResponse) {
+ if (listBaseResponse.code == 200) {
+ List appInfos = listBaseResponse.data;
+ if (appInfos != null && appInfos.size() > 0) {
+ madapter.setData(listBaseResponse.data);
+ }
+ } else {
+ madapter.setData(new ArrayList());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+
+
public void finish(View view) {
finish();
}
diff --git a/app/src/main/java/com/appstore/uiui/adapter/AppAdapter.java b/app/src/main/java/com/appstore/uiui/adapter/AppAdapter.java
index 8d00da9..f3ebf9c 100644
--- a/app/src/main/java/com/appstore/uiui/adapter/AppAdapter.java
+++ b/app/src/main/java/com/appstore/uiui/adapter/AppAdapter.java
@@ -84,16 +84,16 @@ public class AppAdapter extends RecyclerView.Adapter {
if (installed) {
if (update) {
holder.btnDownLoad.setText("更新");
- holder.btnDownLoad.setTextColor(mContext.getColor(R.color.default_color));
+ holder.btnDownLoad.setTextColor(mContext.getColor(R.color.default_text_color));
holder.btnDownLoad.setBackground(mContext.getDrawable(R.drawable.btn_shap_download));
} else {
holder.btnDownLoad.setText("打开");
- holder.btnDownLoad.setTextColor(mContext.getColor(R.color.default_color));
- holder.btnDownLoad.setBackground(mContext.getDrawable(R.drawable.btn_shap_download));
+ holder.btnDownLoad.setTextColor(mContext.getColor(R.color.white));
+ holder.btnDownLoad.setBackground(mContext.getDrawable(R.drawable.btn_shap_open));
}
} else {
holder.btnDownLoad.setText("安装");
- holder.btnDownLoad.setTextColor(mContext.getColor(R.color.default_color));
+ holder.btnDownLoad.setTextColor(mContext.getColor(R.color.default_text_color));
holder.btnDownLoad.setBackground(mContext.getDrawable(R.drawable.btn_shap_download));
if (null != mDownloadTask) {
if (mDownloadTask.getKey().equals(appInfo.getApp_url())) {
diff --git a/app/src/main/java/com/appstore/uiui/adapter/ImageAdapter.java b/app/src/main/java/com/appstore/uiui/adapter/ImageAdapter.java
index ae20c09..3754315 100644
--- a/app/src/main/java/com/appstore/uiui/adapter/ImageAdapter.java
+++ b/app/src/main/java/com/appstore/uiui/adapter/ImageAdapter.java
@@ -22,6 +22,8 @@ public class ImageAdapter extends RecyclerView.Adapter mSrcList;
private Context mContext;
+ public ImageAdapter() {
+ }
public ImageAdapter(List mSrcList) {
this.mSrcList = mSrcList;
@@ -44,6 +46,11 @@ public class ImageAdapter extends RecyclerView.Adapter data) {
+ this.mSrcList = data;
+ notifyDataSetChanged();
+ }
+
static class ImageViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
diff --git a/app/src/main/java/com/appstore/uiui/adapter/LocalAppAdapter.java b/app/src/main/java/com/appstore/uiui/adapter/LocalAppAdapter.java
index 795160e..475beae 100644
--- a/app/src/main/java/com/appstore/uiui/adapter/LocalAppAdapter.java
+++ b/app/src/main/java/com/appstore/uiui/adapter/LocalAppAdapter.java
@@ -1,11 +1,8 @@
package com.appstore.uiui.adapter;
-import android.content.ComponentName;
import android.content.Context;
-import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
-import android.net.Uri;
import android.text.format.Formatter;
import android.view.LayoutInflater;
import android.view.View;
@@ -14,11 +11,9 @@ import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
-import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;
import com.appstore.uiui.R;
-import com.appstore.uiui.bean.AppInfo;
import com.appstore.uiui.bean.GlideCircleWithBorder;
import com.appstore.uiui.bean.LocalApp;
import com.appstore.uiui.utils.ApkUtils;
@@ -60,12 +55,23 @@ public class LocalAppAdapter extends RecyclerView.Adapter" + appInfo.getNewVersionName());
holder.btnDownLoad.setText("更新");
holder.btnDownLoad.setTextColor(context.getColor(R.color.red));
- holder.btnDownLoad.setBackground(context.getDrawable(R.drawable.btn_style_none));
+ holder.btnDownLoad.setBackground(context.getDrawable(R.drawable.btn_shap_open));
holder.btnDownLoad.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -96,7 +96,7 @@ public class UpdateAppAdapter extends RecyclerView.Adapter mViewPager;
- private ImageView imageView;
+ private ImageView imageView, iv_banner;
private List appInfoList;//
private List newAppInfoList = new ArrayList<>();
private AppAdapter adapter;
@@ -68,7 +72,6 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager
private installReceiver myReceiver;
private Context mContext;
- private String TAG = "FeaturedFragment";
public FeaturedFragment() {
@@ -159,6 +162,7 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager
((SimpleItemAnimator) mRvResult.getItemAnimator()).setSupportsChangeAnimations(false);
// mRvResult.setItemAnimator(null);
imageView = view.findViewById(R.id.imageView);
+ iv_banner = view.findViewById(R.id.iv_banner);
mRefreshLayout = view.findViewById(R.id.featured_refresh_layout);
RefreshManager.getInstance().register(this);
mViewPager = view.findViewById(R.id.banner_view);
@@ -193,9 +197,43 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager
// OKGO.getAllAppInfo(handler);
getAllAppInfo();
// OKGO.getBannerImg(handler);
- getBannerImg();
+// getBannerImg();
+ getBanner();
}
+ private void getBanner() {
+ NetInterfaceManager.getInstance().getBannerObservable()
+ .subscribe(new Observer>() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ Log.e("getBanner", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(BaseResponse bannerBaseResponse) {
+ Log.e("getBanner", "onNext: ");
+ if (bannerBaseResponse.code == 200) {
+ String imgURL = bannerBaseResponse.data.getBanner_img();
+ Glide.with(iv_banner).load(imgURL).into(iv_banner);
+ } else {
+
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ Log.e("getBanner", "onError: " + e.getMessage());
+
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getBanner", "onComplete: ");
+
+ }
+ });
+
+ }
@Override
public void onRefresh() {
@@ -208,8 +246,7 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager
private void getAllAppInfo() {
- QueryAllApp allApp = NetWorkManager.getQueryAllAppControl();
- allApp.getAllApp(Utils.getSerial())
+ NetInterfaceManager.getInstance().getQueryAllAppControl().getAllApp(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer>>() {
@@ -237,6 +274,7 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager
@Override
public void onError(@NonNull Throwable e) {
Log.e("getAllAppInfo", "onError: " + e.getMessage());
+ onComplete();
}
@Override
@@ -247,14 +285,15 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager
}
private void getBannerImg() {
- BannerImage bannerImage = NetWorkManager.getBannerImageControl();
- bannerImage.getImageURL(Utils.getSerial())
+ NetInterfaceManager.getInstance()
+ .getBannerImageControl()
+ .getImageURL(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
-
+ Log.e("getBannerImg", "onSubscribe: ");
}
@Override
@@ -262,7 +301,7 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager
int code = listBaseResponse.code;
if (code == 200) {
List urlList = listBaseResponse.data;
- if (null != urlList || urlList.size() != 0) {
+ if (null != urlList && urlList.size() != 0) {
List list = new ArrayList<>();
for (ImageUrl url : urlList) {
list.add(url.getImg_url());
@@ -286,17 +325,30 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager
})
.setInterval(5000)
.create(list);
+ mViewPager.setVisibility(View.VISIBLE);
+ iv_banner.setVisibility(View.GONE);
+
+ } else {
+ iv_banner.setVisibility(View.VISIBLE);
+ mViewPager.setVisibility(View.GONE);
}
+ } else {
+ iv_banner.setVisibility(View.VISIBLE);
+ mViewPager.setVisibility(View.GONE);
}
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("getBannerImg", "onError: " + e.getMessage());
+ iv_banner.setVisibility(View.VISIBLE);
+ mViewPager.setVisibility(View.GONE);
+ onComplete();
}
@Override
public void onComplete() {
+ Log.e("getBannerImg", "onComplete: ");
mRefreshLayout.finishRefresh();
}
});
diff --git a/app/src/main/java/com/appstore/uiui/fragment/ManageFragment.java b/app/src/main/java/com/appstore/uiui/fragment/ManageFragment.java
index d7737ec..c9a5b8a 100644
--- a/app/src/main/java/com/appstore/uiui/fragment/ManageFragment.java
+++ b/app/src/main/java/com/appstore/uiui/fragment/ManageFragment.java
@@ -10,6 +10,7 @@ import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
+import android.provider.Settings;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
@@ -29,6 +30,7 @@ import com.appstore.uiui.bean.UpdateAppInfo;
import com.appstore.uiui.utils.ApkUtils;
import com.appstore.uiui.utils.ToastUtil;
+import java.io.File;
import java.util.ArrayList;
import java.util.List;
@@ -42,7 +44,7 @@ public class ManageFragment extends LazyLoadFragment {
private RecyclerView mRvLocal;
private ImageView iv_nodata;
- private TextView manage_tv_updateNum;
+ private TextView manage_tv_updateNum, manage_tv_appNum;
private List localAppList;
private List updateAppInfoList;
private List applist;
@@ -59,6 +61,7 @@ public class ManageFragment extends LazyLoadFragment {
@Override
public void initViews(View view) {
manage_tv_updateNum = view.findViewById(R.id.manage_tv_updateNum);
+ manage_tv_appNum = view.findViewById(R.id.manage_tv_appNum);
manage_cl_localapp = view.findViewById(R.id.manage_cl_localapp);
manage_cl_localapp.setOnClickListener(new View.OnClickListener() {
@Override
@@ -99,6 +102,11 @@ public class ManageFragment extends LazyLoadFragment {
super.onStart();
mContext = getActivity();
initAPPData(handler);
+ List localApps = getLocalApp();
+ if (localApps != null && localApps.size() > 0) {
+ manage_tv_appNum.setText(localApps.size() + "");
+ }
+
}
synchronized private void initAPPData(final Handler handler) {
@@ -118,7 +126,12 @@ public class ManageFragment extends LazyLoadFragment {
bean.setPackageName(packageName);
Drawable icon = resolveInfoList.get(i).loadIcon(mContext.getPackageManager());
bean.setIcon(icon);
-
+ if (packageName.equals(mContext.getPackageName()) || packageName.equals("com.android.uiuios")) {
+ continue;
+ }
+ if (ApkUtils.canremove_systemapp.contains(packageName)) {
+ continue;
+ }
try {
PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo(packageName, 0);
String versionCode = mContext.getPackageManager()
diff --git a/app/src/main/java/com/appstore/uiui/jpush/MyJPushMessageReceiver.java b/app/src/main/java/com/appstore/uiui/jpush/MyJPushMessageReceiver.java
index dcc513d..64253a1 100644
--- a/app/src/main/java/com/appstore/uiui/jpush/MyJPushMessageReceiver.java
+++ b/app/src/main/java/com/appstore/uiui/jpush/MyJPushMessageReceiver.java
@@ -2,7 +2,7 @@ package com.appstore.uiui.jpush;
import android.content.Context;
-import com.appstore.uiui.MyApplication;
+import com.appstore.uiui.base.BaseApplication;
import cn.jpush.android.api.CustomMessage;
import cn.jpush.android.api.JPushMessage;
@@ -39,6 +39,6 @@ public class MyJPushMessageReceiver extends JPushMessageReceiver {
@Override
public void onMessage(Context context, CustomMessage customMessage) {
super.onMessage(context, customMessage);
- MyApplication.getInstance().manageCustomMessage(customMessage);
+ BaseApplication.getInstance().manageCustomMessage(customMessage);
}
}
diff --git a/app/src/main/java/com/appstore/uiui/network/HTTPInterface.java b/app/src/main/java/com/appstore/uiui/network/HTTPInterface.java
index db3a931..08011ad 100644
--- a/app/src/main/java/com/appstore/uiui/network/HTTPInterface.java
+++ b/app/src/main/java/com/appstore/uiui/network/HTTPInterface.java
@@ -4,29 +4,16 @@ import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
-import android.os.Handler;
-import android.os.Message;
import android.util.Log;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.appstore.uiui.BuildConfig;
-import com.appstore.uiui.TextCode.MessageWhat;
import com.appstore.uiui.bean.AppInfo;
import com.appstore.uiui.bean.BaseResponse;
-import com.appstore.uiui.bean.bannerImage;
-import com.appstore.uiui.network.URLs.UrlAddress;
import com.appstore.uiui.network.api.NewestAppUpdate;
-import com.appstore.uiui.network.api.SNInfo;
import com.appstore.uiui.utils.FileUtils;
-import com.appstore.uiui.utils.LogUtils;
-import com.appstore.uiui.utils.SPUtils;
-import com.appstore.uiui.utils.ToastUtil;
-import com.appstore.uiui.utils.Utils;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import com.appstore.uiui.utils.JGYUtils;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -42,8 +29,9 @@ public class HTTPInterface {
public static void checkUpdate(final Context context, String packageName, String versionCode) {
- NewestAppUpdate newestAppUpdate = NetWorkManager.getNewestAppUpdateControl();
- newestAppUpdate.getAppUpdate(packageName, versionCode)
+ NetInterfaceManager.getInstance()
+ .getNewestAppUpdateControl()
+ .getAppUpdate(packageName, versionCode, JGYUtils.getInstance().checkAppPlatform())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer>() {
diff --git a/app/src/main/java/com/appstore/uiui/network/NetInterfaceManager.java b/app/src/main/java/com/appstore/uiui/network/NetInterfaceManager.java
new file mode 100644
index 0000000..1e11b7c
--- /dev/null
+++ b/app/src/main/java/com/appstore/uiui/network/NetInterfaceManager.java
@@ -0,0 +1,123 @@
+package com.appstore.uiui.network;
+
+import android.content.Context;
+import android.os.Environment;
+
+import com.appstore.uiui.bean.Banner;
+import com.appstore.uiui.bean.BaseResponse;
+import com.appstore.uiui.network.URLs.UrlAddress;
+import com.appstore.uiui.network.api.BannerImage;
+import com.appstore.uiui.network.api.DownloadApp;
+import com.appstore.uiui.network.api.GetBanner;
+import com.appstore.uiui.network.api.NewestAppUpdate;
+import com.appstore.uiui.network.api.QueryAllApp;
+import com.appstore.uiui.network.api.SNInfo;
+import com.appstore.uiui.network.api.SearchApp;
+import com.appstore.uiui.network.api.QueryPackageApp;
+
+import java.io.File;
+import java.util.concurrent.TimeUnit;
+
+import io.reactivex.Observable;
+import io.reactivex.Scheduler;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.Cache;
+import okhttp3.OkHttpClient;
+import retrofit2.CallAdapter;
+import retrofit2.Converter;
+import retrofit2.Retrofit;
+import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
+import retrofit2.converter.gson.GsonConverterFactory;
+
+public class NetInterfaceManager {
+ private static NetInterfaceManager sInstance;
+ private Context mContext;
+ private static Retrofit mRetrofit;
+
+ public static final String ROOT_URL = UrlAddress.ROOT_URL;
+ public static final String HTTP_KEY = "YTM3YTAxNTJmMmZmNzkyM2E2YzIwZjlhZTc0NzNmMGI=";
+
+ private NetInterfaceManager(Context context) {
+ this.mContext = context;
+ if (null == mRetrofit) {
+ mRetrofit = new Retrofit.Builder()
+ .client(OK_HTTP_CLIENT)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build();
+ }
+ }
+
+ public static void init(Context context) {
+ if (sInstance == null) {
+ sInstance = new NetInterfaceManager(context);
+ }
+
+ }
+
+ public static NetInterfaceManager getInstance() {
+ if (sInstance == null) {
+ throw new IllegalStateException("You must be init NetworkManager first");
+ }
+ return sInstance;
+ }
+
+ private static final long cacheSize = 1024 * 1024 * 32;// 缓存文件最大限制大小20M
+ private static String cacheDirectory = Environment.getExternalStorageDirectory() + "/okttpcaches"; // 设置缓存文件路径
+ private static Cache cache = new Cache(new File(cacheDirectory), cacheSize); //
+ private static final OkHttpClient OK_HTTP_CLIENT;
+ private static final int timeOut = 5;
+
+ static {
+ //如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了
+ OkHttpClient.Builder builder = new OkHttpClient.Builder();
+ builder.connectTimeout(timeOut, TimeUnit.SECONDS); // 设置连接超时时间
+ builder.writeTimeout(timeOut, TimeUnit.SECONDS);// 设置写入超时时间
+ builder.readTimeout(timeOut, TimeUnit.SECONDS);// 设置读取数据超时时间
+ builder.retryOnConnectionFailure(true);// 设置进行连接失败重试
+ builder.cache(cache);// 设置缓存
+ OK_HTTP_CLIENT = builder.build();
+ }
+
+ private static CallAdapter.Factory rxJavaCallAdapterFactory = RxJava2CallAdapterFactory.create();
+ private static Converter.Factory gsonConverterFactory = GsonConverterFactory.create();
+
+ public Observable> getBannerObservable() {
+ return mRetrofit.create(GetBanner.class)
+ .getBanner()
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+
+ public SNInfo getuserInfoControl() {
+ return mRetrofit.create(SNInfo.class);
+ }
+
+ public QueryAllApp getQueryAllAppControl() {
+ return mRetrofit.create(QueryAllApp.class);
+ }
+
+ public SearchApp getSearchAppControl() {
+ return mRetrofit.create(SearchApp.class);
+ }
+
+ public BannerImage getBannerImageControl() {
+ return mRetrofit.create(BannerImage.class);
+ }
+
+ public DownloadApp getDownloadAppControl() {
+ return mRetrofit.create(DownloadApp.class);
+ }
+
+ public NewestAppUpdate getNewestAppUpdateControl() {
+ return mRetrofit.create(NewestAppUpdate.class);
+ }
+
+ public QueryPackageApp getQueryPackageAppControl() {
+ return mRetrofit.create(QueryPackageApp.class);
+ }
+
+}
diff --git a/app/src/main/java/com/appstore/uiui/network/NetWorkManager.java b/app/src/main/java/com/appstore/uiui/network/NetWorkManager.java
deleted file mode 100644
index 641f011..0000000
--- a/app/src/main/java/com/appstore/uiui/network/NetWorkManager.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.appstore.uiui.network;
-
-import android.os.Environment;
-
-import com.appstore.uiui.network.URLs.UrlAddress;
-import com.appstore.uiui.network.api.BannerImage;
-import com.appstore.uiui.network.api.DownloadApp;
-import com.appstore.uiui.network.api.NewestAppUpdate;
-import com.appstore.uiui.network.api.QueryAllApp;
-import com.appstore.uiui.network.api.SNInfo;
-
-import java.io.File;
-import java.util.concurrent.TimeUnit;
-
-import okhttp3.Cache;
-import okhttp3.OkHttpClient;
-import retrofit2.CallAdapter;
-import retrofit2.Converter;
-import retrofit2.Retrofit;
-import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
-import retrofit2.converter.gson.GsonConverterFactory;
-
-public class NetWorkManager {
-
- private static final String ROOT_URL = UrlAddress.ROOT_URL;
-
- private static final long cacheSize = 1024 * 1024 * 20;// 缓存文件最大限制大小20M
- private static String cacheDirectory = Environment.getExternalStorageDirectory() + "/okttpcaches"; // 设置缓存文件路径
- private static Cache cache = new Cache(new File(cacheDirectory), cacheSize); //
- private static final OkHttpClient client;
-
- static {
- //如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了
- OkHttpClient.Builder builder = new OkHttpClient.Builder();
- builder.connectTimeout(8, TimeUnit.SECONDS); // 设置连接超时时间
- builder.writeTimeout(8, TimeUnit.SECONDS);// 设置写入超时时间
- builder.readTimeout(8, TimeUnit.SECONDS);// 设置读取数据超时时间
- builder.retryOnConnectionFailure(true);// 设置进行连接失败重试
- builder.cache(cache);// 设置缓存
- client = builder.build();
- }
-
- private static CallAdapter.Factory rxJavaCallAdapterFactory = RxJava2CallAdapterFactory.create();
- private static Converter.Factory gsonConverterFactory = GsonConverterFactory.create();
-
- private static SNInfo userInfoControl;
- private static QueryAllApp queryAllAppControl;
- private static BannerImage bannerImageControl;
- private static DownloadApp downloadAppControl;
- private static NewestAppUpdate newestAppUpdateControl;
-
-
- public static SNInfo getuserInfoControl() {
- if (null == userInfoControl) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(client)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- userInfoControl = retrofit.create(SNInfo.class);
- }
- return userInfoControl;
- }
-
- public static QueryAllApp getQueryAllAppControl() {
- if (null == queryAllAppControl) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(client)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- queryAllAppControl = retrofit.create(QueryAllApp.class);
- }
- return queryAllAppControl;
- }
-
- public static BannerImage getBannerImageControl() {
- if (null == bannerImageControl) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(client)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- bannerImageControl = retrofit.create(BannerImage.class);
- }
- return bannerImageControl;
- }
-
- public static DownloadApp getDownloadAppControl() {
- if (null == downloadAppControl) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(client)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- downloadAppControl = retrofit.create(DownloadApp.class);
- }
- return downloadAppControl;
- }
-
- public static NewestAppUpdate getNewestAppUpdateControl() {
- if (null == newestAppUpdateControl) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(client)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- newestAppUpdateControl = retrofit.create(NewestAppUpdate.class);
- }
- return newestAppUpdateControl;
- }
-
-}
diff --git a/app/src/main/java/com/appstore/uiui/network/URLs/UrlAddress.java b/app/src/main/java/com/appstore/uiui/network/URLs/UrlAddress.java
index c750ea0..18f1f7d 100644
--- a/app/src/main/java/com/appstore/uiui/network/URLs/UrlAddress.java
+++ b/app/src/main/java/com/appstore/uiui/network/URLs/UrlAddress.java
@@ -3,30 +3,35 @@ package com.appstore.uiui.network.URLs;
public class UrlAddress {
public final static String ROOT_URL = "http://homework.uiuios.com/android/";
- public final static String GET_ALL_APPINFO = ROOT_URL + "app/queryAllApp";
+ public final static String GET_ALL_APPINFO = "app/queryAllApp";
//获取所有应用
- public final static String GET_ALL_RANK = ROOT_URL + "App/rankings";
- //获取所有应用排行
- public final static String GET_APPSEARCHE = ROOT_URL + "App/appSearch";
- //搜索应用
- public final static String GET_INFO_FROMESN = ROOT_URL + "sn/getSnInfo";
- //通过SN获取绑定信息
- public final static String GET_SORT_APP = ROOT_URL + "App/sortApp";
- //app分类查询
- public final static String SET_APP_INSTALL_INFO = ROOT_URL + "App/appInstall";
- //发送app安装信息
- public final static String SET_APP_UNINSTALL_INFO = ROOT_URL + "App/appUnload";
- //发送app卸载信息
- public final static String GET_APP_UPDATE = ROOT_URL + "Update/update";
- //根据包名获取更新
- public final static String GET_BANNER_IMG = ROOT_URL + "app/getBrand";
- //获取banner图
- public final static String GET_ALL_PACKAGENAME = ROOT_URL + "App/allPackageSn";
- //获取所有应用包名
- public final static String GET_SUBClASSFY = ROOT_URL + "Application/getSubClassfy";
- //获取应用分类
- public final static String SEND_DOWNLOADAPP = ROOT_URL + "app/downloadApp";
+ public final static String GET_PACKAGE_APP = "app/queryPackageApp";
- public final static String GET_NEWESTAPPUPDATE = ROOT_URL + "app/newestAppUpdate";
+ public final static String GET_ALL_RANK = "App/rankings";
+ //获取所有应用排行
+ public final static String GET_APPSEARCHE = "App/appSearch";
+ //搜索应用
+ public final static String GET_INFO_FROMESN = "sn/getSnInfo";
+ //通过SN获取绑定信息
+ public final static String GET_SORT_APP = "App/sortApp";
+ //app分类查询
+ public final static String SET_APP_INSTALL_INFO = "App/appInstall";
+ //发送app安装信息
+ public final static String SET_APP_UNINSTALL_INFO = "App/appUnload";
+ //发送app卸载信息
+ public final static String GET_APP_UPDATE = "Update/update";
+ //根据包名获取更新
+ public final static String GET_BANNER_IMG = "app/getBrand";
+ //获取banner图
+ public final static String GET_BANNER = "sn/getBanner";
+
+
+ public final static String GET_ALL_PACKAGENAME = "App/allPackageSn";
+ //获取所有应用包名
+ public final static String GET_SUBClASSFY = "Application/getSubClassfy";
+ //获取应用分类
+ public final static String SEND_DOWNLOADAPP = "app/downloadApp";
+
+ public final static String GET_NEWESTAPPUPDATE = "app/newestAppUpdate";
//根据包名获取更新
}
diff --git a/app/src/main/java/com/appstore/uiui/network/api/GetBanner.java b/app/src/main/java/com/appstore/uiui/network/api/GetBanner.java
new file mode 100644
index 0000000..fe65f81
--- /dev/null
+++ b/app/src/main/java/com/appstore/uiui/network/api/GetBanner.java
@@ -0,0 +1,16 @@
+package com.appstore.uiui.network.api;
+
+import com.appstore.uiui.bean.Banner;
+import com.appstore.uiui.bean.BaseResponse;
+import com.appstore.uiui.network.URLs.UrlAddress;
+
+import io.reactivex.Observable;
+import retrofit2.http.GET;
+
+public interface GetBanner {
+ @GET(UrlAddress.GET_BANNER)
+ Observable> getBanner(
+
+ );
+
+}
diff --git a/app/src/main/java/com/appstore/uiui/network/api/NewestAppUpdate.java b/app/src/main/java/com/appstore/uiui/network/api/NewestAppUpdate.java
index 872a90d..de98cdb 100644
--- a/app/src/main/java/com/appstore/uiui/network/api/NewestAppUpdate.java
+++ b/app/src/main/java/com/appstore/uiui/network/api/NewestAppUpdate.java
@@ -14,6 +14,7 @@ public interface NewestAppUpdate {
@GET(UrlAddress.GET_NEWESTAPPUPDATE)
Observable> getAppUpdate(
@Query("packageName") String packageName,
- @Query("versionCode") String versionCode
+ @Query("versionCode") String versionCode,
+ @Query("type") int type
);
}
diff --git a/app/src/main/java/com/appstore/uiui/network/api/QueryPackageApp.java b/app/src/main/java/com/appstore/uiui/network/api/QueryPackageApp.java
new file mode 100644
index 0000000..1b7b55a
--- /dev/null
+++ b/app/src/main/java/com/appstore/uiui/network/api/QueryPackageApp.java
@@ -0,0 +1,19 @@
+package com.appstore.uiui.network.api;
+
+import com.appstore.uiui.bean.AppInfo;
+import com.appstore.uiui.bean.BaseResponse;
+import com.appstore.uiui.network.URLs.UrlAddress;
+
+import java.util.List;
+
+import io.reactivex.Observable;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface QueryPackageApp {
+ @GET(UrlAddress.GET_PACKAGE_APP)
+ Observable> getPackageApp(
+ @Query("packageName") String packageName,
+ @Query("versionCode") long versionCode
+ );
+}
diff --git a/app/src/main/java/com/appstore/uiui/network/api/SearchApp.java b/app/src/main/java/com/appstore/uiui/network/api/SearchApp.java
new file mode 100644
index 0000000..3e549f4
--- /dev/null
+++ b/app/src/main/java/com/appstore/uiui/network/api/SearchApp.java
@@ -0,0 +1,19 @@
+package com.appstore.uiui.network.api;
+
+import com.appstore.uiui.bean.AppInfo;
+import com.appstore.uiui.bean.BaseResponse;
+import com.appstore.uiui.network.URLs.UrlAddress;
+
+import java.util.List;
+
+import io.reactivex.Observable;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface SearchApp {
+ @GET(UrlAddress.GET_ALL_APPINFO)
+ Observable>> getApp(
+ @Query("sn") String sn,
+ @Query("app_name") String app_name
+ );
+}
diff --git a/app/src/main/java/com/appstore/uiui/service/GuardService.java b/app/src/main/java/com/appstore/uiui/service/GuardService.java
index d12ab90..c25f9cc 100644
--- a/app/src/main/java/com/appstore/uiui/service/GuardService.java
+++ b/app/src/main/java/com/appstore/uiui/service/GuardService.java
@@ -27,7 +27,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.appstore.uiui.KeepAliveConnection;
import com.appstore.uiui.bean.BaseResponse;
-import com.appstore.uiui.network.NetWorkManager;
+import com.appstore.uiui.network.NetInterfaceManager;
import com.appstore.uiui.network.api.DownloadApp;
import com.appstore.uiui.utils.ApkUtils;
import com.appstore.uiui.utils.LogUtils;
@@ -179,8 +179,9 @@ public class GuardService extends Service {
String packageName = jsonObject.getString("app_package");
File file = new File(downloadPath);
int admin_id = (int) SPUtils.get(GuardService.this, "admin_id", -1);
- DownloadApp downloadApp = NetWorkManager.getDownloadAppControl();
- downloadApp.sendDownloadApp(packageName, file.length(), Utils.getSerial(), admin_id)
+ NetInterfaceManager.getInstance()
+ .getDownloadAppControl()
+ .sendDownloadApp(packageName, file.length(), Utils.getSerial(), admin_id)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
diff --git a/app/src/main/java/com/appstore/uiui/service/InitJpushServer.java b/app/src/main/java/com/appstore/uiui/service/InitJpushServer.java
index bdf1777..4f549ca 100644
--- a/app/src/main/java/com/appstore/uiui/service/InitJpushServer.java
+++ b/app/src/main/java/com/appstore/uiui/service/InitJpushServer.java
@@ -2,11 +2,14 @@ package com.appstore.uiui.service;
import android.app.Service;
import android.content.Intent;
+import android.os.Environment;
import android.os.IBinder;
import com.appstore.uiui.KeepAliveConnection;
import com.appstore.uiui.network.HTTPInterface;
+import java.io.File;
+
public class InitJpushServer extends Service {
public InitJpushServer() {
}
@@ -25,4 +28,16 @@ public class InitJpushServer extends Service {
HTTPInterface.checkUpdate(InitJpushServer.this, "com.info.sn");
return START_STICKY;
}
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ File file = new File(DOWNLOAD_PATH);
+ if (file.isFile() || !file.exists()) {
+ file.delete();
+ file.mkdirs();
+ }
+ }
+
+ private final String DOWNLOAD_PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + File.separator + "jgy";
}
diff --git a/app/src/main/java/com/appstore/uiui/utils/ApkUtils.java b/app/src/main/java/com/appstore/uiui/utils/ApkUtils.java
index b074446..dba57cd 100644
--- a/app/src/main/java/com/appstore/uiui/utils/ApkUtils.java
+++ b/app/src/main/java/com/appstore/uiui/utils/ApkUtils.java
@@ -557,7 +557,7 @@ public class ApkUtils {
return uid / PER_USER_RANGE;
}
- public static boolean checkIsUpdate(Context context, String packageName, int versionCode) {
+ public static boolean checkIsUpdate(Context context, String packageName, long versionCode) {
PackageManager packageManager = context.getPackageManager();
boolean update = false;
PackageInfo packageInfo = null;
@@ -610,7 +610,7 @@ public class ApkUtils {
return info != null;
}
- public static boolean isUpdate(Context context, String packageName, int versionCode) {
+ public static boolean isUpdate(Context context, String packageName, long versionCode) {
PackageManager pm = context.getPackageManager();
PackageInfo info = null;
try {
@@ -631,5 +631,15 @@ public class ApkUtils {
}
}
+ public static List canremove_systemapp = new ArrayList() {{
+ //预置的可以卸载的系统应用,判断出来为第三方
+ this.add("com.android.quicksearchbox");
+ this.add("com.android.calendar");
+ this.add("com.android.dreams.basic");
+ this.add("com.android.musicfx");
+ this.add("com.android.email");
+ this.add("com.jiaoguanyi.sysc");
+ }};
+
}
diff --git a/app/src/main/java/com/appstore/uiui/utils/JGYUtils.java b/app/src/main/java/com/appstore/uiui/utils/JGYUtils.java
new file mode 100644
index 0000000..93e57f5
--- /dev/null
+++ b/app/src/main/java/com/appstore/uiui/utils/JGYUtils.java
@@ -0,0 +1,320 @@
+package com.appstore.uiui.utils;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.BatteryManager;
+import android.os.Build;
+import android.os.PowerManager;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.appstore.uiui.BuildConfig;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedHashSet;
+
+
+public class JGYUtils {
+ private static final String TAG = JGYUtils.class.getSimpleName();
+
+ private static JGYUtils sInstance;
+ private Context mContext;
+ public static int MTKPlatform = 1;
+ public static int ZhanruiPlatform = 2;
+ public static int UnknowPlatform = 0;
+ public static String MTKTag = "MTK";
+ public static String ZhanruiTag = "展锐";
+
+
+ private JGYUtils(Context context) {
+ this.mContext = context;
+ }
+
+ public static void init(Context context) {
+ if (sInstance == null) {
+ sInstance = new JGYUtils(context);
+ }
+ }
+
+ public static JGYUtils getInstance() {
+ if (sInstance == null) {
+ throw new IllegalStateException("You must be init JGYUtils first");
+ }
+ return sInstance;
+ }
+
+ public static boolean isOfficialVersion() {
+ String channelValue = JGYUtils.getInstance().getStringMetaData();
+ return "official".equals(channelValue);
+ }
+
+ public static boolean isNewlyVersion() {
+ String channelValue = JGYUtils.getInstance().getStringMetaData();
+ return "beta".equals(channelValue);
+ }
+
+ public static boolean isBetaVersion() {
+ String channelValue = JGYUtils.getInstance().getStringMetaData();
+ return "beta".equals(channelValue);
+ }
+
+
+
+ private int getBatteryLevel() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ BatteryManager batteryManager = (BatteryManager) mContext.getSystemService(Context.BATTERY_SERVICE);
+ return batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
+ } else {
+ Intent intent = new ContextWrapper(mContext).registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
+ return (intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) * 100) /
+ intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
+ }
+ }
+
+
+ private PowerManager.WakeLock wakeLock = null;
+ private static final String mWakeLockName = "BackupService";
+
+ /**
+ * 获取电源锁,保持该服务在屏幕熄灭时仍然获取CPU时,保持运行
+ */
+ @SuppressLint("InvalidWakeLockTag")
+ private synchronized void acquireWakeLock() {
+ if (null == wakeLock) {
+ PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+ wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK
+ | PowerManager.ON_AFTER_RELEASE, mWakeLockName);
+ if (null != wakeLock) {
+ Log.e("fht", "acquireWakeLock!");
+ wakeLock.acquire();
+ }
+ }
+ }
+
+ /**
+ * 释放设备电源锁
+ */
+ private synchronized void releaseWakeLock() {
+ if (null != wakeLock) {
+ Log.e("fht", "releaseWakeLock!");
+ wakeLock.release();
+ wakeLock = null;
+ }
+ }
+
+
+ /**
+ * @param ids 需要管控的ID
+ * @param packages 应用程序包名
+ */
+ public void writeDeselectIDtoSystem(String ids, String packages) {
+ if (!TextUtils.isEmpty(ids) && !TextUtils.isEmpty(packages)) {
+ ArrayList idArrayList = new ArrayList<>(Arrays.asList(ids.split(",")));
+ ArrayList packageArrayList = new ArrayList<>(Arrays.asList(packages.split(",")));
+ LinkedHashSet idHashSet = new LinkedHashSet<>(idArrayList);
+ LinkedHashSet packageHashSet = new LinkedHashSet<>(packageArrayList);
+ ArrayList idList = new ArrayList<>(idHashSet);
+ ArrayList packageList = new ArrayList<>(packageHashSet);
+ StringBuilder idStringBuilder = new StringBuilder();
+ for (String id : idList) {
+ if (idStringBuilder.length() > 0) {
+ idStringBuilder.append(",");
+ }
+ idStringBuilder.append(id);
+ }
+ StringBuilder packageStringBuilder = new StringBuilder();
+ for (String pkg : packageList) {
+ if (packageStringBuilder.length() > 0) {
+ packageStringBuilder.append(",");
+ }
+ packageStringBuilder.append(pkg);
+ }
+
+
+ String olddeselectViewArray = Settings.System.getString(mContext.getContentResolver(), "qch_app_forbid_id");
+ Log.e("writeDeselectIDtoSystem", "olddeselectViewArray: " + olddeselectViewArray);
+
+ Settings.System.putString(mContext.getContentResolver(), "qch_app_forbid_id", packageStringBuilder.toString());
+ Settings.System.putString(mContext.getContentResolver(), "DeselectViewArray", idStringBuilder.toString());
+ Log.e("writeDeselectIDtoSystem", "qch_app_forbid_id: " + packageStringBuilder.toString());
+ Log.e("writeDeselectIDtoSystem", "deselectViewArray: " + idStringBuilder.toString());
+ } else {
+ Log.e("writeDeselectIDtoSystem", "writeDeselectIDtoSystem is null:");
+ Settings.System.putString(mContext.getContentResolver(), "qch_app_forbid_id", "");
+ Settings.System.putString(mContext.getContentResolver(), "DeselectViewArray", "");
+ }
+ }
+
+
+
+
+ private static void sendAllweb(Context context) {
+ Intent intent = new Intent("qch_app_website")
+ .setPackage("com.android.settings");
+ intent.putExtra("package_name", "Invalid");
+ context.sendBroadcast(intent);
+ }
+
+ private static void sendwebUrl(Context context) {
+ Intent intent = new Intent("qch_app_inside_website")
+ .setPackage("com.android.settings");
+ intent.putExtra("websitelist", "Invalid");
+ context.sendBroadcast(intent);
+ }
+
+
+ /**
+ * 从Manifest中获取meta-data值
+ * https://blog.csdn.net/yue_233/article/details/91453451
+ *
+ * @return
+ */
+ public String getStringMetaData() {
+ ApplicationInfo appInfo = null;
+ try {
+ appInfo = mContext.getPackageManager().getApplicationInfo(mContext.getPackageName(), PackageManager.GET_META_DATA);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ String value = appInfo.metaData.getString("CHANNEL_VALUE");
+ return value;
+ }
+
+ public void hookWebView() {
+ int sdkInt = Build.VERSION.SDK_INT;
+ try {
+ Class> factoryClass = Class.forName("android.webkit.WebViewFactory");
+ Field field = factoryClass.getDeclaredField("sProviderInstance");
+ field.setAccessible(true);
+ Object sProviderInstance = field.get(null);
+ if (sProviderInstance != null) {
+ Log.i(TAG, "sProviderInstance isn't null");
+ return;
+ }
+
+ Method getProviderClassMethod;
+ if (sdkInt > 22) {
+ getProviderClassMethod = factoryClass.getDeclaredMethod("getProviderClass");
+ } else if (sdkInt == 22) {
+ getProviderClassMethod = factoryClass.getDeclaredMethod("getFactoryClass");
+ } else {
+ Log.i(TAG, "Don't need to Hook WebView");
+ return;
+ }
+ getProviderClassMethod.setAccessible(true);
+ Class> factoryProviderClass = (Class>) getProviderClassMethod.invoke(factoryClass);
+ Class> delegateClass = Class.forName("android.webkit.WebViewDelegate");
+ Constructor> delegateConstructor = delegateClass.getDeclaredConstructor();
+ delegateConstructor.setAccessible(true);
+ if (sdkInt < 26) {//低于Android O版本
+ Constructor> providerConstructor = factoryProviderClass.getConstructor(delegateClass);
+ if (providerConstructor != null) {
+ providerConstructor.setAccessible(true);
+ sProviderInstance = providerConstructor.newInstance(delegateConstructor.newInstance());
+ }
+ } else {
+ Field chromiumMethodName = factoryClass.getDeclaredField("CHROMIUM_WEBVIEW_FACTORY_METHOD");
+ chromiumMethodName.setAccessible(true);
+ String chromiumMethodNameStr = (String) chromiumMethodName.get(null);
+ if (chromiumMethodNameStr == null) {
+ chromiumMethodNameStr = "create";
+ }
+ Method staticFactory = factoryProviderClass.getMethod(chromiumMethodNameStr, delegateClass);
+ if (staticFactory != null) {
+ sProviderInstance = staticFactory.invoke(null, delegateConstructor.newInstance());
+ }
+ }
+
+ if (sProviderInstance != null) {
+ field.set("sProviderInstance", sProviderInstance);
+ Log.i(TAG, "Hook success!");
+ } else {
+ Log.i(TAG, "Hook failed!");
+ }
+ } catch (Throwable e) {
+ Log.w(TAG, e);
+ }
+ }
+
+
+ /**
+ * 忽略电池优化
+ */
+ private void ignoreBatteryOptimization(Context context) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+
+ PowerManager powerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+
+ boolean hasIgnored = powerManager.isIgnoringBatteryOptimizations(context.getPackageName());
+ // 判断当前APP是否有加入电池优化的白名单,如果没有,弹出加入电池优化的白名单的设置对话框。
+ if (!hasIgnored) {
+ Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
+ intent.setData(Uri.parse("package:" + context.getPackageName()));
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivity(intent);
+ }
+ }
+ }
+
+
+ public int checkSNPlatform(String sn) {
+ String secondChars = sn.substring(1, 2);
+ if ("N".equalsIgnoreCase(secondChars)) {//MTK平台
+ return MTKPlatform;
+ } else if ("R".equalsIgnoreCase(secondChars)) {//展锐平台
+ return ZhanruiPlatform;
+ } else {
+ Log.e(TAG, "checkSNPlatform: " + "sn: " + sn + "没有对应平台");
+ return UnknowPlatform;
+ }
+ }
+
+ public int checkAppPlatform() {
+ String platform = BuildConfig.platform;
+ if ("MTK".equalsIgnoreCase(platform)) {
+ Log.i(TAG, "checkAppPlatform: " + "MTK平台");
+ return MTKPlatform;
+ } else if ("ZhanRui".equalsIgnoreCase(platform)) {
+ Log.i(TAG, "checkAppPlatform: " + "展锐平台");
+ return ZhanruiPlatform;
+ } else {
+ Log.i(TAG, "checkAppPlatform: " + "没有数据");
+ return UnknowPlatform;
+ }
+ }
+
+ public boolean isSamePlatform(String platform) {
+ String AppPlatform = BuildConfig.platform;
+ if ("ZhanRui".equals(AppPlatform)) {
+ return ZhanruiTag.equals(platform);
+ } else {
+ return AppPlatform.equals(platform);
+ }
+ }
+
+ public interface GetAppPlatformCallback {
+ void AppPlatform(int platform);
+ }
+
+ public void getAppPlatform(GetAppPlatformCallback getAppPlatformCallback) {
+ String platform = BuildConfig.platform;
+ if ("MTK".equalsIgnoreCase(platform)) {
+ getAppPlatformCallback.AppPlatform(MTKPlatform);
+ } else if ("ZhanRui".equalsIgnoreCase(platform)) {
+ getAppPlatformCallback.AppPlatform(ZhanruiPlatform);
+ } else {
+ getAppPlatformCallback.AppPlatform(UnknowPlatform);
+ }
+ }
+}
diff --git a/app/src/main/java/com/appstore/uiui/utils/LogUtils.java b/app/src/main/java/com/appstore/uiui/utils/LogUtils.java
index f6700b7..04ea495 100644
--- a/app/src/main/java/com/appstore/uiui/utils/LogUtils.java
+++ b/app/src/main/java/com/appstore/uiui/utils/LogUtils.java
@@ -6,31 +6,31 @@ import com.appstore.uiui.BuildConfig;
public class LogUtils {
public static void v(String tag, String msg) {
- if (BuildConfig.LOG_DEBUG) {
+ if (BuildConfig.DEBUG) {
Log.v(tag, msg);
}
}
public static void d(String tag, String msg) {
- if (BuildConfig.LOG_DEBUG) {
+ if (BuildConfig.DEBUG) {
Log.d(tag, msg);
}
}
public static void i(String tag, String msg) {
- if (BuildConfig.LOG_DEBUG) {
+ if (BuildConfig.DEBUG) {
Log.i(tag, msg);
}
}
public static void w(String tag, String msg) {
- if (BuildConfig.LOG_DEBUG) {
+ if (BuildConfig.DEBUG) {
Log.w(tag, msg);
}
}
public static void e(String tag, String msg) {
- if (BuildConfig.LOG_DEBUG) {
+ if (BuildConfig.DEBUG) {
Log.e(tag, msg);
}
}
diff --git a/app/src/main/java/com/appstore/uiui/utils/ServiceAliveUtils.java b/app/src/main/java/com/appstore/uiui/utils/ServiceAliveUtils.java
index 729b39a..4819ac9 100644
--- a/app/src/main/java/com/appstore/uiui/utils/ServiceAliveUtils.java
+++ b/app/src/main/java/com/appstore/uiui/utils/ServiceAliveUtils.java
@@ -3,14 +3,14 @@ package com.appstore.uiui.utils;
import android.app.ActivityManager;
import android.content.Context;
-import com.appstore.uiui.MyApplication;
+import com.appstore.uiui.base.BaseApplication;
public class ServiceAliveUtils {
public static boolean isServiceAlice() {
boolean isServiceRunning = false;
ActivityManager manager =
- (ActivityManager) MyApplication.getInstance().getAppContext().getSystemService(Context.ACTIVITY_SERVICE);
+ (ActivityManager) BaseApplication.getInstance().getAppContext().getSystemService(Context.ACTIVITY_SERVICE);
if (manager == null) {
return true;
}
diff --git a/app/src/main/java/com/appstore/uiui/utils/ToastUtil.java b/app/src/main/java/com/appstore/uiui/utils/ToastUtil.java
index 3b4a475..2da114f 100644
--- a/app/src/main/java/com/appstore/uiui/utils/ToastUtil.java
+++ b/app/src/main/java/com/appstore/uiui/utils/ToastUtil.java
@@ -51,7 +51,7 @@ public class ToastUtil {
mainHandler.post(new Runnable() {
@Override
public void run() {
- if (BuildConfig.LOG_DEBUG) {
+ if (BuildConfig.DEBUG) {
if (toast != null) {
toast.setText(msg);
toast.show();
diff --git a/app/src/main/res/drawable-xhdpi/appstore_logo.png b/app/src/main/res/drawable-xhdpi/appstore_logo.png
index 7d84a41..22f9ce4 100644
Binary files a/app/src/main/res/drawable-xhdpi/appstore_logo.png and b/app/src/main/res/drawable-xhdpi/appstore_logo.png differ
diff --git a/app/src/main/res/drawable-xhdpi/banner.png b/app/src/main/res/drawable-xhdpi/banner.png
new file mode 100644
index 0000000..d3f0417
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/banner.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_back.png b/app/src/main/res/drawable-xhdpi/ic_back.png
index 5db22cb..1806c2a 100644
Binary files a/app/src/main/res/drawable-xhdpi/ic_back.png and b/app/src/main/res/drawable-xhdpi/ic_back.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_menu_search.png b/app/src/main/res/drawable-xhdpi/ic_menu_search.png
index 04571d8..eb43499 100644
Binary files a/app/src/main/res/drawable-xhdpi/ic_menu_search.png and b/app/src/main/res/drawable-xhdpi/ic_menu_search.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_place_holder.png b/app/src/main/res/drawable-xhdpi/ic_place_holder.png
index 14be0e9..c84122c 100644
Binary files a/app/src/main/res/drawable-xhdpi/ic_place_holder.png and b/app/src/main/res/drawable-xhdpi/ic_place_holder.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_download_task.png b/app/src/main/res/drawable-xhdpi/icon_download_task.png
index a79517a..d5efc58 100644
Binary files a/app/src/main/res/drawable-xhdpi/icon_download_task.png and b/app/src/main/res/drawable-xhdpi/icon_download_task.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_my_task.png b/app/src/main/res/drawable-xhdpi/icon_my_task.png
index b0041f2..3ba3886 100644
Binary files a/app/src/main/res/drawable-xhdpi/icon_my_task.png and b/app/src/main/res/drawable-xhdpi/icon_my_task.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_update_task.png b/app/src/main/res/drawable-xhdpi/icon_update_task.png
index 1667ae0..065a866 100644
Binary files a/app/src/main/res/drawable-xhdpi/icon_update_task.png and b/app/src/main/res/drawable-xhdpi/icon_update_task.png differ
diff --git a/app/src/main/res/drawable/btn_shap_delete.xml b/app/src/main/res/drawable/btn_shap_delete.xml
new file mode 100644
index 0000000..717a51b
--- /dev/null
+++ b/app/src/main/res/drawable/btn_shap_delete.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/btn_shap_open.xml b/app/src/main/res/drawable/btn_shap_open.xml
new file mode 100644
index 0000000..6052d58
--- /dev/null
+++ b/app/src/main/res/drawable/btn_shap_open.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/btn_style_none.xml b/app/src/main/res/drawable/btn_style_none.xml
index ac143e5..0c36e3c 100644
--- a/app/src/main/res/drawable/btn_style_none.xml
+++ b/app/src/main/res/drawable/btn_style_none.xml
@@ -73,7 +73,7 @@
android:shape="rectangle"
android:useLevel="false">
-
+
diff --git a/app/src/main/res/layout-land/activity_about.xml b/app/src/main/res/layout-land/activity_about.xml
index 0d8654b..8f9fba4 100644
--- a/app/src/main/res/layout-land/activity_about.xml
+++ b/app/src/main/res/layout-land/activity_about.xml
@@ -84,7 +84,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="36dp"
- android:text="版权申明"
+ android:text="回到桌面"
android:textColor="@color/default_color"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
diff --git a/app/src/main/res/layout-land/activity_details.xml b/app/src/main/res/layout-land/activity_details.xml
index 903a8bd..36e9065 100644
--- a/app/src/main/res/layout-land/activity_details.xml
+++ b/app/src/main/res/layout-land/activity_details.xml
@@ -42,8 +42,8 @@
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
- android:overScrollMode="never"
- android:background="@color/white">
+ android:background="@color/white"
+ android:overScrollMode="never">
+ android:textSize="@dimen/sp_16"
+ android:textStyle="bold" />
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/dp_2"
+ android:layout_marginRight="@dimen/dp_15"
+ android:text="大小" />
+ android:textStyle="bold"
+ android:visibility="gone">
@@ -154,9 +154,9 @@
android:layout_marginTop="@dimen/dp_2"
android:layout_marginRight="@dimen/dp_15"
android:text="更新"
- android:visibility="gone"
android:textSize="@dimen/sp_16"
- android:textStyle="bold">
+ android:textStyle="bold"
+ android:visibility="gone">
@@ -178,20 +178,22 @@
android:layout_marginTop="@dimen/dp_2"
android:layout_marginRight="@dimen/dp_15"
android:text="信息"
- android:visibility="gone"
android:textSize="@dimen/sp_16"
- android:textStyle="bold">
+ android:textStyle="bold"
+ android:visibility="gone">
+ android:layout_weight="1"
+ android:gravity="center_vertical"
+ android:singleLine="true"
+ android:text="" />
+ android:text="版本"
+ android:visibility="gone" />
+ android:text="时间"
+ android:visibility="gone" />
+ android:text="开发者"
+ android:visibility="gone" />
diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml
index 34320e7..949e47c 100644
--- a/app/src/main/res/layout-land/activity_main.xml
+++ b/app/src/main/res/layout-land/activity_main.xml
@@ -36,44 +36,42 @@
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginEnd="20dp"
- android:visibility="gone"
- android:layout_weight="1">
+ android:layout_weight="1"
+ android:visibility="visible">
+
-
+
+
+
+
+ android:background="@drawable/shap_search_right"
+ android:gravity="center_vertical"
+ android:text="@string/search_edit"
+ android:textColor="#a7a5a5">
-
-
-
-
-
-
-
-
-
+
+
@@ -99,16 +97,17 @@
app:tl_indicator_style="TRIANGLE"
app:tl_tab_space_equal="true"
app:tl_textBold="SELECT"
- app:tl_textsize="@dimen/sp_15"
- app:tl_textSelectColor="@color/default_color"
- app:tl_textUnselectColor="@color/install" />
+ app:tl_textSelectColor="@color/default_text_color"
+ app:tl_textUnselectColor="@color/install"
+ app:tl_textsize="@dimen/sp_17" />
+ android:layout_weight="1"
+ android:background="@color/white"
+ android:overScrollMode="never" />
diff --git a/app/src/main/res/layout-land/fragment_featured.xml b/app/src/main/res/layout-land/fragment_featured.xml
index 9aa2067..ad36de7 100644
--- a/app/src/main/res/layout-land/fragment_featured.xml
+++ b/app/src/main/res/layout-land/fragment_featured.xml
@@ -1,8 +1,8 @@
+
+
+ android:layout_margin="10dp"
+ android:visibility="gone"/>
+
+ android:layout_height="match_parent"
+ android:nestedScrollingEnabled="false"
+ android:overScrollMode="never" />
+
-
+
diff --git a/app/src/main/res/layout-land/item_donwloading.xml b/app/src/main/res/layout-land/item_donwloading.xml
index 98c2b3e..0743b65 100644
--- a/app/src/main/res/layout-land/item_donwloading.xml
+++ b/app/src/main/res/layout-land/item_donwloading.xml
@@ -65,7 +65,7 @@
android:layout_gravity="center_vertical"
android:layout_marginStart="10dp"
android:layout_marginEnd="20dp"
- android:textColor="@color/default_color"
- android:background="@drawable/btn_style_none"
+ android:textColor="@color/white"
+ android:background="@drawable/btn_shap_open"
android:text="开始" />
\ No newline at end of file
diff --git a/app/src/main/res/layout-land/item_download_manager.xml b/app/src/main/res/layout-land/item_download_manager.xml
index a25bbe1..bc72658 100644
--- a/app/src/main/res/layout-land/item_download_manager.xml
+++ b/app/src/main/res/layout-land/item_download_manager.xml
@@ -107,8 +107,8 @@
android:layout_height="@dimen/dp_30"
android:layout_gravity="center"
android:text="暂停"
- android:textColor="@color/default_color"
- android:background="@drawable/btn_style_none" />
+ android:textColor="@color/white"
+ android:background="@drawable/btn_shap_open" />
diff --git a/app/src/main/res/layout-land/item_image.xml b/app/src/main/res/layout-land/item_image.xml
index a1f7746..5214e82 100644
--- a/app/src/main/res/layout-land/item_image.xml
+++ b/app/src/main/res/layout-land/item_image.xml
@@ -1,7 +1,7 @@
diff --git a/app/src/main/res/layout-land/item_local_app.xml b/app/src/main/res/layout-land/item_local_app.xml
index a54d8b9..d9cb013 100644
--- a/app/src/main/res/layout-land/item_local_app.xml
+++ b/app/src/main/res/layout-land/item_local_app.xml
@@ -60,18 +60,17 @@
-
+ android:background="@color/white"
+ android:overScrollMode="never">
+ android:textSize="@dimen/sp_16"
+ android:textStyle="bold" />
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/dp_2"
+ android:layout_marginRight="@dimen/dp_15"
+ android:text="大小" />
+
-
-
+ android:textStyle="bold"
+ android:visibility="gone" />
-
-
+ android:layout_marginRight="@dimen/dp_15" />
-
-
+ android:textStyle="bold"
+ android:visibility="gone" />
-
-
+ android:layout_marginRight="@dimen/dp_15" />
-
-
+ android:textStyle="bold"
+ android:visibility="gone" />
+ android:layout_weight="1"
+ android:gravity="center_vertical"
+ android:singleLine="true"
+ android:text="" />
+ android:text="版本"
+ android:visibility="gone" />
+ android:text="时间"
+ android:visibility="gone" />
+ android:text="开发者"
+ android:visibility="gone" />
diff --git a/app/src/main/res/layout-port/activity_main.xml b/app/src/main/res/layout-port/activity_main.xml
index 3168f8f..949e47c 100644
--- a/app/src/main/res/layout-port/activity_main.xml
+++ b/app/src/main/res/layout-port/activity_main.xml
@@ -36,44 +36,42 @@
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginEnd="20dp"
- android:visibility="gone"
- android:layout_weight="1">
+ android:layout_weight="1"
+ android:visibility="visible">
+
-
+
+
+
+
+ android:background="@drawable/shap_search_right"
+ android:gravity="center_vertical"
+ android:text="@string/search_edit"
+ android:textColor="#a7a5a5">
-
-
-
-
-
-
-
-
-
+
+
@@ -95,19 +93,21 @@
android:id="@+id/main_sliding_tab_layout"
android:layout_width="match_parent"
android:layout_height="40dp"
+ android:background="@color/white"
app:tl_indicator_style="TRIANGLE"
app:tl_tab_space_equal="true"
app:tl_textBold="SELECT"
- app:tl_textsize="@dimen/sp_15"
- app:tl_textSelectColor="@color/default_color"
- app:tl_textUnselectColor="@color/install" />
+ app:tl_textSelectColor="@color/default_text_color"
+ app:tl_textUnselectColor="@color/install"
+ app:tl_textsize="@dimen/sp_17" />
+ android:layout_weight="1"
+ android:background="@color/white"
+ android:overScrollMode="never" />
diff --git a/app/src/main/res/layout-port/activity_searcher.xml b/app/src/main/res/layout-port/activity_searcher.xml
index 4b4dba4..0667494 100644
--- a/app/src/main/res/layout-port/activity_searcher.xml
+++ b/app/src/main/res/layout-port/activity_searcher.xml
@@ -24,31 +24,54 @@
android:scaleType="centerInside"
android:src="@drawable/ic_back" />
-
+ android:layout_height="@dimen/dp_40"
+ android:layout_gravity="center"
+ android:gravity="center_vertical">
+
+
+
+
+
+
+
+
+
+
-
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-port/fragment_featured.xml b/app/src/main/res/layout-port/fragment_featured.xml
index 9aa2067..b3f08fb 100644
--- a/app/src/main/res/layout-port/fragment_featured.xml
+++ b/app/src/main/res/layout-port/fragment_featured.xml
@@ -1,8 +1,8 @@
+
+ android:layout_margin="10dp"
+ android:visibility="gone"/>
+ android:layout_height="match_parent"
+ android:nestedScrollingEnabled="false"
+ android:overScrollMode="never" />
+
+
+
+ android:overScrollMode="never" />
diff --git a/app/src/main/res/layout-port/item_donwloading.xml b/app/src/main/res/layout-port/item_donwloading.xml
index d18c380..c405d70 100644
--- a/app/src/main/res/layout-port/item_donwloading.xml
+++ b/app/src/main/res/layout-port/item_donwloading.xml
@@ -64,8 +64,8 @@
android:layout_height="@dimen/dp_30"
android:layout_gravity="center_vertical"
android:layout_marginStart="10dp"
- android:textColor="@color/default_color"
+ android:textColor="@color/white"
android:layout_marginEnd="20dp"
- android:background="@drawable/btn_style_none"
+ android:background="@drawable/btn_shap_open"
android:text="开始" />
\ No newline at end of file
diff --git a/app/src/main/res/layout-port/item_download_manager.xml b/app/src/main/res/layout-port/item_download_manager.xml
index a25bbe1..bc72658 100644
--- a/app/src/main/res/layout-port/item_download_manager.xml
+++ b/app/src/main/res/layout-port/item_download_manager.xml
@@ -107,8 +107,8 @@
android:layout_height="@dimen/dp_30"
android:layout_gravity="center"
android:text="暂停"
- android:textColor="@color/default_color"
- android:background="@drawable/btn_style_none" />
+ android:textColor="@color/white"
+ android:background="@drawable/btn_shap_open" />
diff --git a/app/src/main/res/layout-port/item_image.xml b/app/src/main/res/layout-port/item_image.xml
index a1f7746..fca2ebc 100644
--- a/app/src/main/res/layout-port/item_image.xml
+++ b/app/src/main/res/layout-port/item_image.xml
@@ -1,8 +1,8 @@
diff --git a/app/src/main/res/layout-port/item_local_app.xml b/app/src/main/res/layout-port/item_local_app.xml
index a54d8b9..cfb49cb 100644
--- a/app/src/main/res/layout-port/item_local_app.xml
+++ b/app/src/main/res/layout-port/item_local_app.xml
@@ -2,7 +2,7 @@
@@ -14,17 +14,16 @@
+ android:layout_marginLeft="16dp" />
@@ -58,28 +57,47 @@
-
-
-
-
-
+ android:orientation="vertical">
+
+
+
+
+
+
+
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
index b93d6ed..2f53339 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 e905244..2f53339 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 e905244..2f53339 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 e905244..2f53339 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 e905244..2f53339 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
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 84daecb..2913460 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -7,14 +7,14 @@
#FFFFFF
#000000
#f5f4f4
- #959393
- #868686
+ #b6b6b6
+ #333333
#4880ff
#ffffff
#ffffff
#F1F1F1
#d64743
#00a0e9
- #E9E9E9
+ #d8d8d8