From 94aa3a7d8690b6a47491716aaa2a9515eb64aec3 Mon Sep 17 00:00:00 2001 From: Administrator <981964879@qq.com> Date: Tue, 3 Dec 2019 18:31:58 +0800 Subject: [PATCH] =?UTF-8?q?update:2019.12.03=20fix:=20add:1.0.0=E5=8F=91?= =?UTF-8?q?=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 13 +- app/src/main/AndroidManifest.xml | 11 +- .../java/com/appstore/uiui/MyApplication.java | 24 ++- .../uiui/activity/KindDetailActivity.java | 66 ++++++- .../appstore/uiui/activity/MainActivity.java | 5 +- .../uiui/activity/SearcherActivity.java | 95 ++++++++++ .../com/appstore/uiui/adapter/AppAdapter.java | 4 +- .../uiui/fragment/FeaturedFragment.java | 2 +- .../appstore/uiui/fragment/RankFragment.java | 168 +++++++----------- .../com/appstore/uiui/network/OKGOPost.java | 98 ++++++++-- .../com/appstore/uiui/network/URLs/Url.java | 4 + .../uiui/receiver/AppManagerReceiver.java | 20 ++- app/src/main/res/drawable/icon_serach.png | Bin 0 -> 2507 bytes .../main/res/drawable/shap_search_left.xml | 9 + .../main/res/drawable/shap_search_right.xml | 11 ++ app/src/main/res/layout/activity_main.xml | 47 +++-- app/src/main/res/layout/activity_searcher.xml | 56 ++++++ app/src/main/res/values/strings.xml | 2 + 18 files changed, 473 insertions(+), 162 deletions(-) create mode 100644 app/src/main/java/com/appstore/uiui/activity/SearcherActivity.java create mode 100644 app/src/main/res/drawable/icon_serach.png create mode 100644 app/src/main/res/drawable/shap_search_left.xml create mode 100644 app/src/main/res/drawable/shap_search_right.xml create mode 100644 app/src/main/res/layout/activity_searcher.xml diff --git a/app/build.gradle b/app/build.gradle index 443bbfc..6f05253 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,9 +16,9 @@ android { minSdkVersion 23 targetSdkVersion 29 versionCode 1 - versionName "1.0" + versionName "1.0.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - //极光 + //极光 ndk { //选择要添加的对应 cpu 类型的 .so 库。 abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' @@ -101,6 +101,11 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.recyclerview:recyclerview:1.0.0' + implementation 'androidx.cardview:cardview:1.0.0' + + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' //github第三方控件maven implementation 'com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar' @@ -132,12 +137,8 @@ dependencies { implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0' implementation 'io.reactivex:rxjava:1.2.2' implementation 'io.reactivex:rxandroid:1.2.1' - testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test.ext:junit:1.1.0' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' - implementation 'androidx.cardview:cardview:1.0.0' //极光推送 implementation 'cn.jiguang.sdk:jpush:3.4.1' // 此处以JPush 3.4.1 版本为例。 implementation 'cn.jiguang.sdk:jcore:2.2.4' // 此处以JCore 2.2.4 版本为例。 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f564d81..2b147fb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,11 +10,9 @@ - - + - @@ -35,10 +33,12 @@ android:supportsRtl="true" android:theme="@style/AppTheme" tools:ignore="GoogleAppIndexingWarning"> + + + android:exported="true" /> @@ -90,8 +90,7 @@ android:name="cn.jpush.android.ui.PopWinActivity" android:exported="false" android:theme="@style/MyDialogStyle" - tools:replace="android:exported" /> - + tools:replace="android:exported" /> 0) { try { JSONObject extra = new JSONObject(jsonArray); - String packageName = extra.getString("package"); - int is_network = extra.getInt("is_network"); - if (is_network == 1) { -// Settings.System.putString(getContentResolver(), "qch_jgy_network_disallow", net_not); - + String package0 = extra.getString("package0"); + String package1 = extra.getString("package1"); + if (package0.length() != 0) { + boolean qch_jgy_network_disallow = Settings.System.putString(getContentResolver(), "qch_jgy_network_allow", package0); + LogUtils.e("fht", "setAppNetworkstate::" + qch_jgy_network_disallow + ":" + Settings.System.getString(getContentResolver(), "qch_jgy_network_allow")); } else { - + boolean qch_jgy_network_disallow = Settings.System.putString(getContentResolver(), "qch_jgy_network_allow", "invalid"); + LogUtils.e("fht", "setAppNetworkstate::" + qch_jgy_network_disallow + ":" + Settings.System.getString(getContentResolver(), "qch_jgy_network_allow")); } + if (package1.length() != 0) { + boolean qch_jgy_network_disallow = Settings.System.putString(getContentResolver(), "qch_jgy_network_disallow", package1); + LogUtils.e("fht", "setAppNetworkstate::" + qch_jgy_network_disallow + ":" + Settings.System.getString(getContentResolver(), "qch_jgy_network_disallow")); + } else { + boolean qch_jgy_network_disallow = Settings.System.putString(getContentResolver(), "qch_jgy_network_disallow", "invalid"); + LogUtils.e("fht", "setAppNetworkstate::" + qch_jgy_network_disallow + ":" + Settings.System.getString(getContentResolver(), "qch_jgy_network_disallow")); + } + } catch (JSONException e) { e.printStackTrace(); LogUtils.e("setAppNetworkstate", e.getMessage()); @@ -375,7 +383,7 @@ public class MyApplication extends Application { JSONObject object = new JSONObject(json); String packageName = object.getString("package"); ToastUtil.debugShow("收到应用卸载消息:包名" + packageName); - if (!packageName.equals("")) { + if (!packageName.equals("") && !packageName.equals(getAppContext().getPackageName())) { ApkUtils.deleteApkInSilence(packageName); } } catch (JSONException e) { diff --git a/app/src/main/java/com/appstore/uiui/activity/KindDetailActivity.java b/app/src/main/java/com/appstore/uiui/activity/KindDetailActivity.java index 2a2c8e0..a0b24e5 100644 --- a/app/src/main/java/com/appstore/uiui/activity/KindDetailActivity.java +++ b/app/src/main/java/com/appstore/uiui/activity/KindDetailActivity.java @@ -6,15 +6,33 @@ import android.view.View; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.appstore.uiui.R; +import com.appstore.uiui.adapter.AppAdapter; import com.appstore.uiui.base.BaseActivity; +import com.appstore.uiui.base.RefreshManager; +import com.appstore.uiui.bean.AppInfo; +import com.appstore.uiui.network.OKGOPost; +import com.appstore.uiui.utils.ApkUtils; +import com.appstore.uiui.utils.SPUtils; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.util.ArrayList; +import java.util.List; -public class KindDetailActivity extends BaseActivity { +public class KindDetailActivity extends BaseActivity implements RefreshManager.RefreshInterface { private TextView title; private String name; - private int subject; + private int subject, grade, type = 0; + private SmartRefreshLayout mRefreshLayout; + private RecyclerView detail_rv; + private AppAdapter adapter; + private List AppInfoList = new ArrayList<>(); @Override @@ -25,14 +43,34 @@ public class KindDetailActivity extends BaseActivity { @Override protected void initView() { title = findViewById(R.id.detail_tv_title); + detail_rv = findViewById(R.id.detail_rv); + mRefreshLayout = findViewById(R.id.detail_refresh_layout); + } @Override protected void initData() { subject = getIntent().getIntExtra("kind", 0); name = getIntent().getStringExtra("name"); + if (name.equals("娱乐")) { + type = 1; + } + grade = (int) SPUtils.get(this, "sn_grade", 0); title.setText(name); - + RefreshManager.getInstance().register(this); + adapter = new AppAdapter(AppInfoList, false, getApplicationContext()); + adapter.setHasStableIds(true); + detail_rv.setAdapter(adapter); + detail_rv.setLayoutManager(new LinearLayoutManager(this)); + mRefreshLayout.setEnableLoadMore(false); + mRefreshLayout.setEnableRefresh(true); + mRefreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(RefreshLayout refreshlayout) { + OKGOPost.getSortApp(handler, type, grade, subject); + } + }); + OKGOPost.getSortApp(handler, type, grade, subject); } @Override @@ -50,9 +88,29 @@ public class KindDetailActivity extends BaseActivity { super.handleMessage(msg); switch (msg.what) { case 1: - + AppInfoList = (List) msg.obj; + adapter.setData(checkUpdateOrInstalled(AppInfoList)); + adapter.notifyDataSetChanged(); break; } + mRefreshLayout.finishRefresh(); + } }; + public List checkUpdateOrInstalled(List list) { + for (AppInfo appInfo : list) { + appInfo.setInstall(ApkUtils.isAvailable(getApplicationContext(), appInfo.getApp_package())); + appInfo.setUpdate(ApkUtils.checkIsUpdate(getApplicationContext(), appInfo.getApp_package(), Integer.parseInt(appInfo.getApp_version_code()))); + } + return list; + } + @Override + public void onRefresh() { + mRefreshLayout.autoRefresh(); + } + + @Override + public void onLoadBitMap(boolean isLoad) { + + } } 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 9c75ee6..f5ba387 100644 --- a/app/src/main/java/com/appstore/uiui/activity/MainActivity.java +++ b/app/src/main/java/com/appstore/uiui/activity/MainActivity.java @@ -107,7 +107,7 @@ public class MainActivity extends BaseActivity { search_layout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - + startActivity(new Intent(MainActivity.this, SearcherActivity.class)); } }); mSlidingTabLayout = findViewById(R.id.main_sliding_tab_layout); @@ -300,7 +300,7 @@ public class MainActivity extends BaseActivity { String path = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "POStemp"; File file = new File(path); file.mkdirs(); - } else { + } else { ToastUtil.show("需要授予所有权限才能正常使用本程序!"); } } @@ -354,6 +354,7 @@ public class MainActivity extends BaseActivity { UserInfo userInfo = (UserInfo) msg.obj; SPUtils.put(MainActivity.this, "member_id", userInfo.getMember_id()); SPUtils.put(MainActivity.this, "sn_id", userInfo.getId()); + SPUtils.put(MainActivity.this, "sn_grade", userInfo.getSn_grade()); break; case 2: SPUtils.put(MainActivity.this, "isLogined", 2); diff --git a/app/src/main/java/com/appstore/uiui/activity/SearcherActivity.java b/app/src/main/java/com/appstore/uiui/activity/SearcherActivity.java new file mode 100644 index 0000000..4ba5065 --- /dev/null +++ b/app/src/main/java/com/appstore/uiui/activity/SearcherActivity.java @@ -0,0 +1,95 @@ +package com.appstore.uiui.activity; + +import android.os.Handler; +import android.os.Message; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.appcompat.widget.SearchView; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +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.network.OKGOPost; +import com.appstore.uiui.utils.ApkUtils; +import com.appstore.uiui.utils.LogUtils; +import com.appstore.uiui.utils.ToastUtil; + +import java.util.ArrayList; +import java.util.List; + + +public class SearcherActivity extends BaseActivity { + private SearchView search; + private List mAppInfoList = new ArrayList<>(); + private RecyclerView recyclerView; + private AppAdapter madapter; + + @Override + protected int setLayoutResourceID() { + return R.layout.activity_searcher; + + } + + @Override + protected void initView() { + search = findViewById(R.id.search); + recyclerView = findViewById(R.id.recyclerView); + } + + @Override + protected void initData() { + madapter = new AppAdapter(mAppInfoList, false, getApplicationContext()); + madapter.setHasStableIds(true); + recyclerView.setAdapter(madapter); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + } + + @Override + protected void setListener() { + search.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + LogUtils.e("search", query); + OKGOPost.searchAppbyName(handler, query); + return false; + } + + @Override + public boolean onQueryTextChange(String newText) { + madapter.setData(new ArrayList()); + madapter.notifyDataSetChanged(); + return false; + } + }); + } + + public void finish(View view) { + finish(); + } + + private Handler handler = new Handler() { + @Override + public void handleMessage(@NonNull Message msg) { + super.handleMessage(msg); + switch (msg.what) { + case 1: + mAppInfoList = (List) msg.obj; + madapter.setData(checkUpdateOrInstalled(mAppInfoList)); + madapter.notifyDataSetChanged(); + break; + } + } + }; + + public List checkUpdateOrInstalled(List list) { + for (AppInfo appInfo : list) { + appInfo.setInstall(ApkUtils.isAvailable(getApplicationContext(), appInfo.getApp_package())); + appInfo.setUpdate(ApkUtils.checkIsUpdate(getApplicationContext(), appInfo.getApp_package(), Integer.parseInt(appInfo.getApp_version_code()))); + } + return list; + } +} 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 1a65d9f..12f27b9 100644 --- a/app/src/main/java/com/appstore/uiui/adapter/AppAdapter.java +++ b/app/src/main/java/com/appstore/uiui/adapter/AppAdapter.java @@ -100,6 +100,9 @@ public class AppAdapter extends RecyclerView.Adapter { } } else { holder.btnDownLoad.setText("下载"); + if (downloadTask != null) { + holder.refresh(downloadTask.progress); + } } holder.btnDownLoad.setOnClickListener(new View.OnClickListener() { @Override @@ -178,7 +181,6 @@ public class AppAdapter extends RecyclerView.Adapter { break; case Progress.FINISH: btnDownLoad.setText("完成"); - break; case Progress.LOADING: btnDownLoad.setText((int) (progress.fraction * 100) + "%"); diff --git a/app/src/main/java/com/appstore/uiui/fragment/FeaturedFragment.java b/app/src/main/java/com/appstore/uiui/fragment/FeaturedFragment.java index 1631206..0cbdecc 100644 --- a/app/src/main/java/com/appstore/uiui/fragment/FeaturedFragment.java +++ b/app/src/main/java/com/appstore/uiui/fragment/FeaturedFragment.java @@ -83,7 +83,7 @@ public class FeaturedFragment extends LazyLoadFragment implements RefreshManager @Override public void loadData(Bundle savedInstanceState) { // initData(); - initAPPData(handler); +// initAPPData(handler); } synchronized private void initAPPData(final Handler handler) { diff --git a/app/src/main/java/com/appstore/uiui/fragment/RankFragment.java b/app/src/main/java/com/appstore/uiui/fragment/RankFragment.java index 7149f56..b138116 100644 --- a/app/src/main/java/com/appstore/uiui/fragment/RankFragment.java +++ b/app/src/main/java/com/appstore/uiui/fragment/RankFragment.java @@ -2,6 +2,8 @@ package com.appstore.uiui.fragment; import android.os.Bundle; +import android.os.Handler; +import android.os.Message; import android.util.Log; import android.view.View; @@ -15,6 +17,10 @@ import com.appstore.uiui.adapter.AppAdapter; import com.appstore.uiui.base.LazyLoadFragment; import com.appstore.uiui.base.RefreshManager; import com.appstore.uiui.bean.AppInfo; +import com.appstore.uiui.network.OKGOPost; +import com.appstore.uiui.utils.ApkUtils; +import com.appstore.uiui.utils.LogUtils; +import com.lzy.okgo.OkGo; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; @@ -32,14 +38,9 @@ import java.util.List; public class RankFragment extends LazyLoadFragment implements RefreshManager.RefreshInterface { private RecyclerView mRvResult; private SmartRefreshLayout mRefreshLayout; - - private int page = 1; private List mAppInfoList; private AppAdapter mAppAdapter; - private boolean isNotLoadBitmap; - - @Override public int getLayoutId() { return R.layout.fragment_rank; @@ -55,117 +56,59 @@ public class RankFragment extends LazyLoadFragment implements RefreshManager.Ref @Override public void loadData(Bundle savedInstanceState) { - mRefreshLayout.autoRefresh(); + } + @Override + public void onStart() { + super.onStart(); + OKGOPost.getRankApp(handler); + LogUtils.e("fht", "RankFragment onStart"); + } + + @Override + public void onResume() { + super.onResume(); + LogUtils.e("fht", "RankFragment onResume"); + + } + + @Override + public void onPause() { + super.onPause(); + LogUtils.e("fht", "RankFragment onPause"); + + } + + @Override + public void onStop() { + super.onStop(); + LogUtils.e("fht", "RankFragment onStop"); + + } + + @Override + public void onDestroy() { + super.onDestroy(); + LogUtils.e("fht", "RankFragment onDestroy"); + + } private void initView() { - - isNotLoadBitmap = false; - mAppInfoList = new ArrayList<>(); mAppAdapter = new AppAdapter(mAppInfoList, true, getContext()); mRvResult.setLayoutManager(new LinearLayoutManager(getActivity())); mRvResult.setAdapter(mAppAdapter); - mRefreshLayout.setEnableRefresh(true); - mRefreshLayout.setEnableLoadMore(true); - + mRefreshLayout.setEnableLoadMore(false); mRefreshLayout.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh(RefreshLayout refreshlayout) { -// RetrofitManager.getInstance(getActivity()).getRankList(1) -// .observeOn(AndroidSchedulers.mainThread()) -// .subscribe(new Subscriber>() { -// @Override -// public void onCompleted() { -// getDetailData(true); -// } -// -// @Override -// public void onError(Throwable e) { -// Log.d("test", e.toString()); -// } -// -// @Override -// public void onNext(List appInfos) { -// -// mAppInfoList.clear(); -// mAppInfoList.addAll(appInfos); -// mAppAdapter.notifyDataSetChanged(); -// } -// }); - } - }); - - mRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull RefreshLayout refreshLayout) { -// RetrofitManager.getInstance(getActivity()).getRankList(++page) -// .observeOn(AndroidSchedulers.mainThread()) -// .subscribe(new Subscriber>() { -// @Override -// public void onCompleted() { -// getDetailData(false); -// } -// -// @Override -// public void onError(Throwable e) { -// Log.d("test", e.toString()); -// } -// -// @Override -// public void onNext(List appInfos) { -// mAppInfoList.addAll(appInfos); -// mAppAdapter.notifyDataSetChanged(); -// } -// }); + OKGOPost.getRankApp(handler); } }); } -// private void getDetailData(final boolean isRefresh) { -// for (int i = 0; i < mAppInfoList.size(); i++) { -// final int position = i; -// RetrofitManager.getInstance(getActivity()).getDetailInfo(mAppInfoList.get(i)) -// .subscribeOn(Schedulers.io()) -// .observeOn(AndroidSchedulers.mainThread()) -// .subscribe(new Subscriber() { -// @Override -// public void onCompleted() { -// mAppAdapter.notifyItemChanged(position); -// mAppAdapter.notifyDataSetChanged(); -// if (mAppInfoList.size() - 1 == position) { -// if (isRefresh) { -// page = 1; -// mRefreshLayout.finishRefresh(); -// } else { -// mRefreshLayout.finishLoadMore(); -// } -// } -// } -// -// @Override -// public void onError(Throwable e) { -// Log.d("test", "onError:" + e.toString()); -// } -// -// @Override -// public void onNext(AppInfo appInfo) { -// boolean isInstall = LocalAppManager.getInstance(getActivity()).isInstall(appInfo); -// appInfo.setInstall(isInstall); -// //判断是否需要升级 -// if (isInstall) { -// boolean isUpdate = LocalAppManager.getInstance(getActivity()).isNeedUpdate(appInfo); -// appInfo.setUpdate(isUpdate); -// } -// mAppInfoList.set(position, appInfo); -// } -// }); -// -// } -// } - @Override public void onRefresh() { @@ -174,6 +117,29 @@ public class RankFragment extends LazyLoadFragment implements RefreshManager.Ref @Override public void onLoadBitMap(boolean isLoad) { - mAppAdapter.setNotLoadBitmap(isLoad); + + } + + private Handler handler = new Handler() { + @Override + public void handleMessage(@NonNull Message msg) { + super.handleMessage(msg); + switch (msg.what) { + case 1: + mAppInfoList = (List) msg.obj; + mAppAdapter.setData(checkUpdateOrInstalled(mAppInfoList)); + mAppAdapter.notifyDataSetChanged(); + break; + } + mRefreshLayout.finishRefresh(); + } + }; + + public List checkUpdateOrInstalled(List list) { + for (AppInfo appInfo : list) { + appInfo.setInstall(ApkUtils.isAvailable(getContext(), appInfo.getApp_package())); + appInfo.setUpdate(ApkUtils.checkIsUpdate(getContext(), appInfo.getApp_package(), Integer.parseInt(appInfo.getApp_version_code()))); + } + return list; } } diff --git a/app/src/main/java/com/appstore/uiui/network/OKGOPost.java b/app/src/main/java/com/appstore/uiui/network/OKGOPost.java index b299002..28f3317 100644 --- a/app/src/main/java/com/appstore/uiui/network/OKGOPost.java +++ b/app/src/main/java/com/appstore/uiui/network/OKGOPost.java @@ -46,7 +46,6 @@ public class OKGOPost { } }; - //msg.what=0 synchronized public static void getAllAppInfo(final Handler handler) { OkGo.post(Url.GET_ALL_APPINFO).execute(new StringCallback() { @Override @@ -75,6 +74,43 @@ public class OKGOPost { } } + @Override + public void onError(Response response) { + super.onError(response); + LogUtils.e("onError", response.getException().toString()); + ToastUtil.show("网络连接失败,检查网络连接"); + handler.sendEmptyMessage(0); + } + }); + } + + synchronized public static void getRankApp(final Handler handler) { + OkGo.get(Url.GET_ALL_RANK).execute(new StringCallback() { + @Override + public void onSuccess(Response response) { + try { + JSONObject body = JSON.parseObject(response.body()); +// LogUtils.e("onSuccess", body.toString()); + LogUtils.e("fht", "getAllAppInfo onSuccess"); + int code = body.getInteger("code"); + String msg = body.getString("msg"); + String data = body.getString("data"); + List applist = JSON.parseArray(data, AppInfo.class); + if (code == MessageWhat.CODE_SUCCESSFUL) { + Message message = new Message(); + message.what = 1; + message.obj = applist; + handler.sendMessage(message); + } else { + ToastUtil.show(msg); + handler.sendEmptyMessage(0); + } + } catch (Exception e) { + LogUtils.e("Exception", e.getMessage()); + ToastUtil.show("服务器错误,请稍后重试"); + handler.sendEmptyMessage(0); + } + } @Override public void onError(Response response) { @@ -82,14 +118,52 @@ public class OKGOPost { LogUtils.e("onError", response.getException().toString()); ToastUtil.show("网络连接失败,检查网络连接"); handler.sendEmptyMessage(0); - } }); - - } - //msg.what=1 + synchronized public static void searchAppbyName(final Handler handler, String app_name) { + OkGo.post(Url.GET_APPSEARCHE) + .params("app_name", app_name) + .execute(new StringCallback() { + @Override + public void onSuccess(Response response) { + try { + JSONObject body = JSON.parseObject(response.body()); + LogUtils.e("onSuccess", body.toString()); + LogUtils.e("fht", "searchAppbyName onSuccess"); + int code = body.getInteger("code"); + String msg = body.getString("msg"); + String data = body.getString("data"); + List applist = JSON.parseArray(data, AppInfo.class); + if (code == MessageWhat.CODE_SUCCESSFUL) { + Message message = new Message(); + message.what = 1; + message.obj = applist; + handler.sendMessage(message); + } else { + ToastUtil.show(msg); + handler.sendEmptyMessage(0); + } + } catch (Exception e) { + LogUtils.e("Exception", e.getMessage()); + ToastUtil.show("服务器错误,请稍后重试"); + handler.sendEmptyMessage(0); + } + } + + @Override + public void onError(Response response) { + super.onError(response); + LogUtils.e("onError", response.getException().toString()); + ToastUtil.show("网络连接失败,检查网络连接"); + handler.sendEmptyMessage(0); + + } + }); + } + + synchronized public static void getUserInfo(final Handler handler) { String sn = Utils.getSerial(); OkGo.post(Url.GET_INFO_FROMESN) @@ -122,7 +196,6 @@ public class OKGOPost { }); } - //msg.what=2 synchronized public static void getUserInfo(final Context context) { OkGo.post(Url.GET_INFO_FROMESN) .params("sn", Utils.getSerial()) @@ -138,6 +211,7 @@ public class OKGOPost { UserInfo userInfo = JSON.parseObject(data, UserInfo.class); SPUtils.put(context, "member_id", userInfo.getMember_id()); SPUtils.put(context, "sn_id", userInfo.getId()); + SPUtils.put(context, "sn_grade", userInfo.getSn_grade()); } else { ToastUtil.show(msg); } @@ -152,7 +226,6 @@ public class OKGOPost { }); } - //msg.what=3 synchronized public static void getSortApp(final Handler handler, int type, int grade, int subject) { OkGo.post(Url.GET_SORT_APP) .params("app_type", type)//应用分类 0学习 1娱乐 @@ -163,6 +236,7 @@ public class OKGOPost { public void onSuccess(Response response) { LogUtils.e("fht", "getSortApp onSuccess"); JSONObject jsonObject = JSON.parseObject(response.body()); + LogUtils.e("fht", jsonObject.toString()); int code = jsonObject.getInteger("code"); String msg = jsonObject.getString("msg"); if (code == MessageWhat.CODE_SUCCESSFUL) { @@ -174,6 +248,7 @@ public class OKGOPost { handler.sendMessage(message); } else { ToastUtil.show(msg); + handler.sendEmptyMessage(0); } } @@ -182,11 +257,11 @@ public class OKGOPost { super.onError(response); LogUtils.e("onError", response.getException().toString()); ToastUtil.show("网络连接失败,检查网络连接"); + handler.sendEmptyMessage(0); } }); } - //msg.what=4 synchronized public static void setAppinstallInfo(int member_id, String sn_id, String app_name, String packageName) { OkGo.post(Url.SET_APP_INSTALL_INFO) .params("member_id", member_id) @@ -216,7 +291,6 @@ public class OKGOPost { } - //msg.what=5 synchronized public static void setAppuninstallInfo(String sn_id, String packageName) { OkGo.post(Url.SET_APP_UNINSTALL_INFO) .params("sn_id", sn_id) @@ -227,10 +301,11 @@ public class OKGOPost { JSONObject object = JSON.parseObject(response.body()); int code = object.getInteger("code"); String msg = object.getString("msg"); + LogUtils.e("setAppinstallInfo", msg); if (code == MessageWhat.CODE_SUCCESSFUL) { - LogUtils.e("setAppinstallInfo", msg); + } else { - ToastUtil.show(msg); + } } @@ -244,5 +319,6 @@ public class OKGOPost { } + } diff --git a/app/src/main/java/com/appstore/uiui/network/URLs/Url.java b/app/src/main/java/com/appstore/uiui/network/URLs/Url.java index b82b0ee..a9adfd2 100644 --- a/app/src/main/java/com/appstore/uiui/network/URLs/Url.java +++ b/app/src/main/java/com/appstore/uiui/network/URLs/Url.java @@ -5,6 +5,10 @@ public class Url { public final static String GET_ALL_APPINFO = NETWORK_HOME_ADDRESS + "/App/allInfo"; //获取所有应用 + public final static String GET_ALL_RANK = NETWORK_HOME_ADDRESS + "/App/rankings"; + //获取所有应用排行 + public final static String GET_APPSEARCHE = NETWORK_HOME_ADDRESS + "/App/appSearch"; + //搜索应用 public final static String GET_INFO_FROMESN = NETWORK_HOME_ADDRESS + "/Member/snInfo"; //通过SN获取绑定信息 public final static String GET_SORT_APP = NETWORK_HOME_ADDRESS + "/App/sortApp"; diff --git a/app/src/main/java/com/appstore/uiui/receiver/AppManagerReceiver.java b/app/src/main/java/com/appstore/uiui/receiver/AppManagerReceiver.java index 433be7b..5ea817d 100644 --- a/app/src/main/java/com/appstore/uiui/receiver/AppManagerReceiver.java +++ b/app/src/main/java/com/appstore/uiui/receiver/AppManagerReceiver.java @@ -30,10 +30,12 @@ public class AppManagerReceiver extends BroadcastReceiver { ToastUtil.show(name + ":安装成功"); LogUtils.e(TAG, "安装了:" + packageName + "包名的程序"); // ToastTool.show("安装成功"); - if (member_id == -1 || sn_id.equals("-1")) { - OKGOPost.getUserInfo(context); - } else { - OKGOPost.setAppinstallInfo(member_id, sn_id, name, packageName); + if (!packageName.equals(context.getPackageName())) { + if (member_id == -1 || sn_id.equals("-1")) { + OKGOPost.getUserInfo(context); + } else { + OKGOPost.setAppinstallInfo(member_id, sn_id, name, packageName); + } } } @@ -41,10 +43,12 @@ public class AppManagerReceiver extends BroadcastReceiver { if (action.equals(Intent.ACTION_PACKAGE_REMOVED)) { String packageName = intent.getDataString().replace("package:", ""); LogUtils.e(TAG, "卸载了:" + packageName + "包名的程序"); - if (member_id == -1 || sn_id.equals("-1")) { - OKGOPost.getUserInfo(context); - } else { - OKGOPost.setAppuninstallInfo(sn_id, packageName); + if (!packageName.equals(context.getPackageName())) { + if (member_id == -1 || sn_id.equals("-1")) { + OKGOPost.getUserInfo(context); + } else { + OKGOPost.setAppuninstallInfo(sn_id, packageName); + } } } } diff --git a/app/src/main/res/drawable/icon_serach.png b/app/src/main/res/drawable/icon_serach.png new file mode 100644 index 0000000000000000000000000000000000000000..5528b27bf19e3c59be1568f46298000bda40b1fb GIT binary patch literal 2507 zcmaJ@dpuOz9v|Z%R7xDrn=#~!*F212W+KVV6fz!pQ;eC-jLgH#U__B}(&Uknj&6l< zB$LPS$fHqSl}9L7I!fgkNfIjQDtC0!xqsa5UZ1_!Z>|0Pet*B;TEF$#`=lFr_XZ_x zB@hU-!Eq14L)sHp?{)Ihr*4|5v9#0T6Mgyn*rEIw3Ksy`)7T*Z#F0q}13UltV&0wzbw27zqs1RM(WAi#%&0AUQ4Ep%4W2!$|cwoo68 z3(|$-0MHqG4sn5fhsd7PLkFoi8q{tF#72OZ3NQga1tMTZuy}ZZE%d7{UTUvSBcPD4 z5dJ}1=wCtky0}3c*jxaDfn&_6NR%bS8V5&VP?lJf8N>pKLL-o91PX1AvcMy8coYWm z?Se|ZacQA=4+80%FX_k@O6T)AcmyIQCI%jZhO@b02ow&7Lm({>78d4GggGyk#it0& zSv-R^1p>gMav2;xgUy1hDpEq&QG8pdG}6CPU~<08vUuN?NxEPN0fmD=!I7&etpQzJ z{y&t-{Ep`FJ%GRC{hz`-&sYwC@Bn!1C@xjHaiIpQt~huHEm92_7p9|nuYj^P=9g}b=m9a%g+g+&D%3ARwF0Gz>~;ZbND3Wr2nqL3&o3PrTH zClM`)4)!FZm4yWcX-!z;64=xzCcxsaacO^ZF+b$4RsxeF^-KV`jA(#H;(TU{vj734F<8gum82rYg5wVSv9{`t#t6c?g5sx*tycGzMfkq27%;v zIuh(X1y5cFJaY{IbiZ73kbs%_UP@7USdzT$K~1r$+#cg@oXY*!p&{!t zV)5akcOYiU~A2&mHJ+G#mVUK_QAm!p_t_8^-r9W@NHYv@>t)k zGn2XN+Z1&S9q&~dc0W9^t7`U6NbEJNlWs%K)}jbD+j&a|?Ys!4SGg|oOM6^bfZA{4 zb!PV(8+A_EZcN@K&WRLGiEK2rUwNy)&|Xp3cy~Xk86pRk5f>Nh2Ss6GZMKTVV%5g& zc)X~!)uD5eTiw{`8Yhutb%f^LB#Mg8m<`Q18-B5g6xnENog80SLinY|aAp?&U0ha{ z{yc&XDPI&Q7rMb7gqjd@_Wt_e!v}ukmG~V)r7C5CkFlFYHgyRrhikNg78uuOpW?z( z2v;kLJ5I-ymzTPSQ;*FnDAaXTbT8d1Z%lYtA!>>?Y-_W75qBhYnuFcT)Ig{Xf~i4; zq6aO@HidmtqvFipheGB)?mrfh7Ac}9#WyeNG(|Z(D-*SKT;8kdG=yaTtnq%vQcc32 zs*!2YJinpslfRQ!tFL9Y$y)oaz&uI^W24bzKZ?ZBoR1|Ap_BpN&n zCJ)P}XA6_YH|{?EhJ38Yagu%#wrAyfgwMEzbf~D?+^_2HregmoBVw_xZ5E zA0F7PK~zhr{@7IfpnfW_yVh825^iwy1Xg_;OWUW9*z1%c+Bxp|@+rT}TcB4#aYyk? zI_u<0Ri$5zo5x=gvLYA!wsjVh3PmZ=vcfJhQLDDWOO!H?7r$AxOSXwpNa_dd;gi1Z zd=}nk!AEFldq?K5R*~qo%UJjg7#$c*A)VWo&+Dtd09QIBiHGI!PLR&^fyn+o6?u`E zAT>)#@8BIAK8D=-XyOXX^{y$S%SX2;?{S)ee-62|rzgE9a-b8N{NVHMDxI7At1T`i zy?-Co%a*sEz%q(qFK;_mE-Ux+4iZiKScwio;^u(e*$Ji90U!M-M}nYp3O82h(TJY= zgK#BmqB0g$i@Mgj9F~)RKjxH5eJS7nUGxmtd)m8V3F3g-;_CI>zS=V5L zlS8^HQNyTrXazkxJsbQM$*{!Wj6)Qv5|sk#27JpqW@dw|M=ytN1Y1okEKQR(fT8?0 zZ~JM{)bf&sl2e9Xe0)Ywd-tE!rrD{f2c$>#?0jbLjbJykxWlxE({raw`aRW|G|NR{ zraLIDES>&N?tDpX-m}D^go2`4>uF#2#LAJ;Yi8tB6CF623rBN*hvhCrQDw{P9@W%L z-mW4~8%l w5JfI + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shap_search_right.xml b/app/src/main/res/drawable/shap_search_right.xml new file mode 100644 index 0000000..f4e45e2 --- /dev/null +++ b/app/src/main/res/drawable/shap_search_right.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a28a4cb..06f2786 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -38,22 +38,41 @@ android:layout_marginEnd="20dp" android:layout_weight="1"> - - - + android:layout_height="@dimen/dp_24" + android:layout_centerInParent="true" + android:gravity="center_vertical"> + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_searcher.xml b/app/src/main/res/layout/activity_searcher.xml new file mode 100644 index 0000000..8fcacbe --- /dev/null +++ b/app/src/main/res/layout/activity_searcher.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6932f07..1240ed0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,4 +2,6 @@ 应用市场 打开 打开失败! + 请输入应用名称或关键字 +