From 37289b86d7cc4a43ecbe5f8c79933d3a20cbfae8 Mon Sep 17 00:00:00 2001 From: wing <843862803@qq.com> Date: Tue, 21 Feb 2023 20:53:23 +0800 Subject: [PATCH 1/5] =?UTF-8?q?perf:=E5=BC=95=E5=85=A5XUpdate=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=20perf=EF=BC=9A=E6=9B=B4=E6=96=B0=E4=BE=9D=E8=B5=96/?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=97=A0=E7=94=A8=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 18 +- .../top/yvyan/guettable/MainActivity.java | 8 +- .../yvyan/guettable/baseFun/UpdateApp.java | 189 +++--------------- .../service/OKHttpUpdateHttpService.java | 148 ++++++++++++++ .../top/yvyan/guettable/data/SettingData.java | 4 - .../guettable/fragment/PersonFragment.java | 2 +- app/src/main/res/xml/cloud_config_parms.xml | 8 +- app/src/main/res/xml/pref_setting.xml | 6 - 8 files changed, 198 insertions(+), 185 deletions(-) create mode 100644 app/src/main/java/top/yvyan/guettable/baseFun/service/OKHttpUpdateHttpService.java diff --git a/app/build.gradle b/app/build.gradle index 7d0da68..5e6c6b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -33,14 +33,12 @@ android { dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.3.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'com.github.zfman:TimetableView:v2.0.7' - implementation 'com.google.android.material:material:1.3.0' + implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0' - //图像识别 - implementation 'com.rmtheis:tess-two:9.1.0' + implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1' implementation 'com.squareup.okhttp3:okhttp:4.9.0' implementation 'com.google.code.gson:gson:2.8.6' @@ -50,11 +48,11 @@ dependencies { annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3' testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.2' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' //XUI implementation 'com.github.xuexiangjys:XUI:1.1.5' - implementation 'androidx.recyclerview:recyclerview:1.1.0' + implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'com.github.bumptech.glide:glide:4.11.0' //友盟移动统计 implementation 'com.umeng.umsdk:common:9.3.6' @@ -69,4 +67,8 @@ dependencies { implementation 'com.github.yalantis:ucrop:2.2.4' //bugly implementation 'com.tencent.bugly:nativecrashreport:3.9.1' + //xUpdate + implementation 'com.github.xuexiangjys:XUpdate:2.1.3' + implementation 'com.zhy:okhttputils:2.6.2' + implementation 'com.github.xuexiangjys.XUtil:xutil-core:2.0.0' } \ No newline at end of file diff --git a/app/src/main/java/top/yvyan/guettable/MainActivity.java b/app/src/main/java/top/yvyan/guettable/MainActivity.java index 4799bcf..b0da5a9 100644 --- a/app/src/main/java/top/yvyan/guettable/MainActivity.java +++ b/app/src/main/java/top/yvyan/guettable/MainActivity.java @@ -1,5 +1,7 @@ package top.yvyan.guettable; +import static top.yvyan.guettable.widget.WidgetUtil.notifyWidgetUpdate; + import android.annotation.SuppressLint; import android.app.ActivityManager; import android.content.BroadcastReceiver; @@ -45,8 +47,6 @@ import top.yvyan.guettable.fragment.MoreFragment; import top.yvyan.guettable.fragment.PersonFragment; import top.yvyan.guettable.util.BackgroundUtil; -import static top.yvyan.guettable.widget.WidgetUtil.notifyWidgetUpdate; - public class MainActivity extends AppCompatActivity { //小米推送KEY public static final String APP_ID = "2882303761518881128"; @@ -120,8 +120,10 @@ public class MainActivity extends AppCompatActivity { UMRemoteConfig.getInstance().setDefaults(R.xml.cloud_config_parms); UMConfigure.init(this, UMengKey, "Umeng", UMConfigure.DEVICE_TYPE_PHONE, ""); //数据统计 MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO); + //XUpdate初始化 + UpdateApp.initXUpdate(this); // 获取更新 - UpdateApp.check(this, 1); + UpdateApp.check(this); //获取通知 Notification.getNotification(this); diff --git a/app/src/main/java/top/yvyan/guettable/baseFun/UpdateApp.java b/app/src/main/java/top/yvyan/guettable/baseFun/UpdateApp.java index 03b90db..79f8d98 100644 --- a/app/src/main/java/top/yvyan/guettable/baseFun/UpdateApp.java +++ b/app/src/main/java/top/yvyan/guettable/baseFun/UpdateApp.java @@ -1,38 +1,14 @@ package top.yvyan.guettable.baseFun; -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.net.Uri; -import android.view.Window; -import android.view.WindowManager; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.TextView; +import static com.xuexiang.xupdate.entity.UpdateError.ERROR.CHECK_NO_NEW_VERSION; -import androidx.appcompat.app.AlertDialog; +import android.app.Activity; -import com.google.gson.Gson; import com.umeng.cconfig.UMRemoteConfig; +import com.xuexiang.xupdate.XUpdate; +import com.xuexiang.xupdate.utils.UpdateUtils; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.util.Date; -import java.util.Objects; - -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; -import top.yvyan.guettable.R; -import top.yvyan.guettable.data.GeneralData; -import top.yvyan.guettable.data.SettingData; -import top.yvyan.guettable.util.AppUtil; -import top.yvyan.guettable.util.TimeUtil; +import top.yvyan.guettable.baseFun.service.OKHttpUpdateHttpService; import top.yvyan.guettable.util.ToastUtil; /** @@ -40,140 +16,35 @@ import top.yvyan.guettable.util.ToastUtil; */ public class UpdateApp { - public static void check(Activity activity, int type) { - //服务器更新 - try { - if (type == 2) { - ToastUtil.showToast(activity, "正在检查更新……"); - } - GeneralData generalData = GeneralData.newInstance(activity); - String url = UMRemoteConfig.getInstance().getConfigValue("updateUrl"); - OkHttpClient okHttpClient = new OkHttpClient(); - final Request request = new Request.Builder() - .url(url) - .get() - .build(); - Call call = okHttpClient.newCall(request); - - call.enqueue(new Callback() { - @Override - public void onFailure(@NotNull Call call, @NotNull IOException e) { - activity.runOnUiThread(() -> ToastUtil.showToast(activity, "更新服务器连接失败,请加群检查更新!")); - } - - @Override - public void onResponse(@NotNull Call call, @NotNull Response response) { - try { - String result = Objects.requireNonNull(response.body()).string(); - UpdateInfo updateInfo = new Gson().fromJson(result, UpdateInfo.class); - if (updateInfo.getVersioncode() > AppUtil.getAppVersionCode(activity)) { - if (type == 2) { - //显示弹窗 - activity.runOnUiThread(() -> showUpdateDialog(activity, updateInfo.comm, updateInfo.getVersion(), updateInfo.url)); - } else { - if (SettingData.newInstance(activity).isAppCheckUpdate() || updateInfo.getForce() <= 1) { - if (updateInfo.getForce() <= 2 || generalData.getAppLastUpdateTime() == -1 || TimeUtil.calcDayOffset(new Date(generalData.getAppLastUpdateTime()), new Date()) >= 1) { - // 显示弹窗 - activity.runOnUiThread(() -> showUpdateDialog(activity, updateInfo.comm, updateInfo.getVersion(), updateInfo.url)); - // 刷新时间 - generalData.setAppLastUpdateTime(System.currentTimeMillis()); - } - } - } - } else { - if (type == 2) { - activity.runOnUiThread(() -> ToastUtil.showToast(activity, "已是最新版本!")); - } - } - } catch (Exception e) { - ToastUtil.showToast(activity, "更新服务器连接失败,请加群更新!"); - } - } - }); - } catch (Exception e) { - e.printStackTrace(); - } - } - /** - * 显示更新弹窗 + * XUpdate初始化 * - * @param context 上下文 - * @param comm 更新说明 - * @param version 版本 - * @param url 下载链接 + * @param activity activity */ - private static void showUpdateDialog(final Context context, String comm, String version, String url) { - AlertDialog dialog; - AlertDialog.Builder builder = new AlertDialog.Builder(context); - // 创建对话框 - dialog = builder.create(); - dialog.show(); - dialog.setCanceledOnTouchOutside(false); - dialog.setCancelable(false); - dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); - dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); - dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - Window window = dialog.getWindow(); - - window.setContentView(R.layout.update_dialog); - TextView updateVersion = window.findViewById(R.id.tv_updateVersion); - updateVersion.setText(version); - TextView updateComm = window.findViewById(R.id.tv_updateComm); - updateComm.setText(comm); - Button btn_hint_yes = window.findViewById(R.id.btn_hint_yes); - ImageView btn_hint_no = window.findViewById(R.id.imageView_no); - Button btn_hint_addQQ = window.findViewById(R.id.btn_hint_addQQ); - btn_hint_yes.setOnClickListener(arg0 -> { - updateApp(context, url); - dialog.dismiss(); - }); - btn_hint_no.setOnClickListener(arg0 -> dialog.dismiss()); - btn_hint_addQQ.setOnClickListener(arg0 -> { - AppUtil.addQQ(context); - dialog.dismiss(); - }); - } - - private static void updateApp(Context context, String url) { - ToastUtil.showToast(context, "正在打开下载链接,请下载后安装"); - Uri uri = Uri.parse(url == null ? context.getResources().getString(R.string.downloadApp_url) : url); - Intent webIntent = new Intent(); - webIntent.setAction("android.intent.action.VIEW"); - webIntent.setData(uri); - context.startActivity(webIntent); + public static void initXUpdate(Activity activity) { + //设置版本更新出错的监听 + XUpdate.get() + .debug(true) + .isWifiOnly(true) //默认设置只在wifi下检查版本更新 + .isGet(true) //默认设置使用get请求检查版本 + .isAutoMode(false) //默认设置非自动模式,可根据具体使用配置 + .param("versionCode", UpdateUtils.getVersionCode(activity)) //设置默认公共请求参数 + .param("appKey", activity.getPackageName()) + .setOnUpdateFailureListener(error -> { + if (error.getCode() != CHECK_NO_NEW_VERSION) { //对不同错误进行处理 + ToastUtil.showToast(activity, error.toString()); + } + }) + .supportSilentInstall(true) //设置是否支持静默安装,默认是true + .setIUpdateHttpService(new OKHttpUpdateHttpService()) //这个必须设置!实现网络请求功能。 + .init(activity.getApplication()); } - private static class UpdateInfo { - private int versionCode; - private String version; - private int force; - private String redText; - private String comm; - private String url; - - public int getVersioncode() { - return versionCode; - } - - public void setVersion(String version) { - this.version = version; - } - - public String getVersion() { - return version; - } - - public int getForce() { - return force; - } - - public void setUrl(String url) { - this.url = url; - } - - public String getUrl() { - return url; - } + public static void check(Activity activity) { + String url = UMRemoteConfig.getInstance().getConfigValue("XUpdateUrl"); + XUpdate.newBuild(activity) + .supportBackgroundUpdate(true) + .updateUrl(url) + .update(); } } diff --git a/app/src/main/java/top/yvyan/guettable/baseFun/service/OKHttpUpdateHttpService.java b/app/src/main/java/top/yvyan/guettable/baseFun/service/OKHttpUpdateHttpService.java new file mode 100644 index 0000000..348692b --- /dev/null +++ b/app/src/main/java/top/yvyan/guettable/baseFun/service/OKHttpUpdateHttpService.java @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2018 xuexiangjys(xuexiangjys@163.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package top.yvyan.guettable.baseFun.service; + +import androidx.annotation.NonNull; + +import com.xuexiang.xupdate.proxy.IUpdateHttpService; +import com.xuexiang.xutil.net.JsonUtil; +import com.zhy.http.okhttp.OkHttpUtils; +import com.zhy.http.okhttp.callback.FileCallBack; +import com.zhy.http.okhttp.callback.StringCallback; +import com.zhy.http.okhttp.request.RequestCall; + +import java.io.File; +import java.util.Map; +import java.util.TreeMap; + +import okhttp3.Call; +import okhttp3.MediaType; +import okhttp3.Request; + +/** + * 使用okhttp + * + * @author xuexiang + * @since 2018/7/10 下午4:04 + */ +public class OKHttpUpdateHttpService implements IUpdateHttpService { + + private final boolean mIsPostJson; + + public OKHttpUpdateHttpService() { + this(false); + } + + public OKHttpUpdateHttpService(boolean isPostJson) { + mIsPostJson = isPostJson; + } + + + @Override + public void asyncGet(@NonNull String url, @NonNull Map params, final @NonNull Callback callBack) { + OkHttpUtils.get() + .url(url) + .params(transform(params)) + .build() + .execute(new StringCallback() { + @Override + public void onError(Call call, Exception e, int id) { + callBack.onError(e); + } + + @Override + public void onResponse(String response, int id) { + callBack.onSuccess(response); + } + }); + } + + @Override + public void asyncPost(@NonNull String url, @NonNull Map params, final @NonNull Callback callBack) { + //这里默认post的是Form格式,使用json格式的请修改 post -> postString + RequestCall requestCall; + if (mIsPostJson) { + requestCall = OkHttpUtils.postString() + .url(url) + .content(JsonUtil.toJson(params)) + .mediaType(MediaType.parse("application/json; charset=utf-8")) + .build(); + } else { + requestCall = OkHttpUtils.post() + .url(url) + .params(transform(params)) + .build(); + } + requestCall + .execute(new StringCallback() { + @Override + public void onError(Call call, Exception e, int id) { + callBack.onError(e); + } + + @Override + public void onResponse(String response, int id) { + callBack.onSuccess(response); + } + }); + } + + @Override + public void download(@NonNull String url, @NonNull String path, @NonNull String fileName, final @NonNull DownloadCallback callback) { + OkHttpUtils.get() + .url(url) + .tag(url) + .build() + .execute(new FileCallBack(path, fileName) { + @Override + public void inProgress(float progress, long total, int id) { + callback.onProgress(progress, total); + } + + @Override + public void onError(Call call, Exception e, int id) { + callback.onError(e); + } + + @Override + public void onResponse(File response, int id) { + callback.onSuccess(response); + } + + @Override + public void onBefore(Request request, int id) { + super.onBefore(request, id); + callback.onStart(); + } + }); + } + + @Override + public void cancelDownload(@NonNull String url) { + OkHttpUtils.getInstance().cancelTag(url); + } + + private Map transform(Map params) { + Map map = new TreeMap<>(); + for (Map.Entry entry : params.entrySet()) { + map.put(entry.getKey(), entry.getValue().toString()); + } + return map; + } + + +} \ No newline at end of file diff --git a/app/src/main/java/top/yvyan/guettable/data/SettingData.java b/app/src/main/java/top/yvyan/guettable/data/SettingData.java index 3fc4a40..fa7ff4e 100644 --- a/app/src/main/java/top/yvyan/guettable/data/SettingData.java +++ b/app/src/main/java/top/yvyan/guettable/data/SettingData.java @@ -41,10 +41,6 @@ public class SettingData { return sharedPreferences.getBoolean(SettingFragment.SHOW_TOOLS_ON_DAY_CLASS, true); } - public boolean isAppCheckUpdate() { - return sharedPreferences.getBoolean(SettingFragment.APP_CHECK_UPDATE, true); - } - public boolean isDevelopMode() { return sharedPreferences.getBoolean(SettingFragment.DEVELOPER_MODE, false); } diff --git a/app/src/main/java/top/yvyan/guettable/fragment/PersonFragment.java b/app/src/main/java/top/yvyan/guettable/fragment/PersonFragment.java index 3ac8809..a7a1ba7 100644 --- a/app/src/main/java/top/yvyan/guettable/fragment/PersonFragment.java +++ b/app/src/main/java/top/yvyan/guettable/fragment/PersonFragment.java @@ -208,7 +208,7 @@ public class PersonFragment extends Fragment implements View.OnClickListener { break; case R.id.person_update: AppUtil.reportFunc(getContext(), getResources().getString(R.string.person_update)); - UpdateApp.check(getActivity(), 2); + UpdateApp.check(getActivity()); break; case R.id.person_download_all: AppUtil.reportFunc(getContext(), getResources().getString(R.string.person_download_all)); diff --git a/app/src/main/res/xml/cloud_config_parms.xml b/app/src/main/res/xml/cloud_config_parms.xml index ab0d0fa..7e57a89 100644 --- a/app/src/main/res/xml/cloud_config_parms.xml +++ b/app/src/main/res/xml/cloud_config_parms.xml @@ -1,12 +1,12 @@ - updateUrl - http://update.guet.yvyan.top/ + XUpdateUrl + https://gitee.com/fireworkwing/resource/raw/master/GuetTable/update - updateUrl + shareText 新的桂电课程表,简洁、好用,分享给你,点击链接下载:https://www.coolapk.com/apk/279989 (酷安官方链接,请放心访问,建议使用浏览器打开) @@ -28,7 +28,7 @@ notificationUrl - http://update.guet.yvyan.top/notification/ + https://gitee.com/fireworkwing/resource/raw/master/GuetTable/notification diff --git a/app/src/main/res/xml/pref_setting.xml b/app/src/main/res/xml/pref_setting.xml index f83d344..1604320 100644 --- a/app/src/main/res/xml/pref_setting.xml +++ b/app/src/main/res/xml/pref_setting.xml @@ -36,12 +36,6 @@ android:summary="开启后考试安排将在日课表和周课表显示" android:title="课表显示考试安排" /> - - -- Gitee From 408cb02cc351961da64714cc31d6313bae508b37 Mon Sep 17 00:00:00 2001 From: wing <843862803@qq.com> Date: Tue, 21 Feb 2023 21:40:15 +0800 Subject: [PATCH 2/5] =?UTF-8?q?fix:=E4=BB=85WiFi=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E6=9B=B4=E6=96=B0=E7=9A=84bug=20perf:?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=80=BB=E8=BE=91=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../guettable/activity/AboutActivity.java | 56 +++++++++---------- .../guettable/activity/LoginActivity.java | 5 +- .../yvyan/guettable/baseFun/UpdateApp.java | 2 +- .../yvyan/guettable/service/fetch/Net.java | 6 +- .../service/fetch/StaticService.java | 20 +++---- 5 files changed, 42 insertions(+), 47 deletions(-) diff --git a/app/src/main/java/top/yvyan/guettable/activity/AboutActivity.java b/app/src/main/java/top/yvyan/guettable/activity/AboutActivity.java index 8b1e7dd..8ea3912 100644 --- a/app/src/main/java/top/yvyan/guettable/activity/AboutActivity.java +++ b/app/src/main/java/top/yvyan/guettable/activity/AboutActivity.java @@ -1,5 +1,7 @@ package top.yvyan.guettable.activity; +import static com.xuexiang.xui.XUI.getContext; + import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; @@ -24,8 +26,6 @@ import top.yvyan.guettable.util.BackgroundUtil; import top.yvyan.guettable.util.DialogUtil; import top.yvyan.guettable.util.ToastUtil; -import static com.xuexiang.xui.XUI.getContext; - public class AboutActivity extends AppCompatActivity { @Override @@ -82,36 +82,34 @@ public class AboutActivity extends AppCompatActivity { * 协助测试 */ public void helpTest() { - if (AppUtil.isWifi(Objects.requireNonNull(getContext()))) { + if (SettingData.newInstance(getContext()).isDevelopMode()) { + Intent intent = new Intent(getContext(), HelpTestActivity.class); + startActivity(intent); + } else if (AppUtil.isWifi(Objects.requireNonNull(getContext()))) { DialogUtil.showTextDialog(this, "为了保证测试顺利,请关闭WIFI,连接数据网络后进行测试。"); } else { - if (SettingData.newInstance(getContext()).isDevelopMode()) { - Intent intent = new Intent(getContext(), HelpTestActivity.class); - startActivity(intent); - } else { - ToastUtil.showToast(this, "请不要退出页面或者切换网络,正在获取凭证,最多需要30s,请稍后!"); - new Thread(() -> { - TokenData tokenData = TokenData.newInstance(getContext()); - int n = tokenData.refresh(); - runOnUiThread(() -> { - try { - if (n == 0) { - //获取剪贴板管理器: - ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); - // 创建普通字符型ClipData - ClipData mClipData = ClipData.newPlainText("Label", tokenData.getCookie()); - // 将ClipData内容放到系统剪贴板里。 - cm.setPrimaryClip(mClipData); - DialogUtil.showTextDialog(this, "感谢协助,凭证复制成功,您现在可以发送给开发者了!"); - } else { - DialogUtil.showTextDialog(this, "获取失败,请稍后重试。"); - } - } catch (Exception e) { - UMCrash.generateCustomLog(e, "helpTest"); + ToastUtil.showToast(this, "请不要退出页面或者切换网络,正在获取凭证,最多需要30s,请稍后!"); + new Thread(() -> { + TokenData tokenData = TokenData.newInstance(getContext()); + int n = tokenData.refresh(); + runOnUiThread(() -> { + try { + if (n == 0) { + //获取剪贴板管理器: + ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); + // 创建普通字符型ClipData + ClipData mClipData = ClipData.newPlainText("Label", tokenData.getCookie()); + // 将ClipData内容放到系统剪贴板里。 + cm.setPrimaryClip(mClipData); + DialogUtil.showTextDialog(this, "感谢协助,凭证复制成功,您现在可以发送给开发者了!"); + } else { + DialogUtil.showTextDialog(this, "获取失败,请稍后重试。"); } - }); - }).start(); - } + } catch (Exception e) { + UMCrash.generateCustomLog(e, "helpTest"); + } + }); + }).start(); } } } \ No newline at end of file diff --git a/app/src/main/java/top/yvyan/guettable/activity/LoginActivity.java b/app/src/main/java/top/yvyan/guettable/activity/LoginActivity.java index 27fcf62..c4b7a95 100644 --- a/app/src/main/java/top/yvyan/guettable/activity/LoginActivity.java +++ b/app/src/main/java/top/yvyan/guettable/activity/LoginActivity.java @@ -111,7 +111,10 @@ public class LoginActivity extends Activity implements View.OnClickListener { String account = etAccount.getText().toString(); String pwd2 = etPwd2.getText().toString(); new Thread(() -> { - String VPNToken = Net.getVPNToken(this); + String VPNToken = null; + if (Net.testNet() != 200) { + VPNToken = Net.getVPNToken(this); + } testCAS(account, pwd2, VPNToken); }).start(); } diff --git a/app/src/main/java/top/yvyan/guettable/baseFun/UpdateApp.java b/app/src/main/java/top/yvyan/guettable/baseFun/UpdateApp.java index 79f8d98..a3dd7e8 100644 --- a/app/src/main/java/top/yvyan/guettable/baseFun/UpdateApp.java +++ b/app/src/main/java/top/yvyan/guettable/baseFun/UpdateApp.java @@ -25,7 +25,7 @@ public class UpdateApp { //设置版本更新出错的监听 XUpdate.get() .debug(true) - .isWifiOnly(true) //默认设置只在wifi下检查版本更新 + .isWifiOnly(false) //默认设置只在wifi下检查版本更新 .isGet(true) //默认设置使用get请求检查版本 .isAutoMode(false) //默认设置非自动模式,可根据具体使用配置 .param("versionCode", UpdateUtils.getVersionCode(activity)) //设置默认公共请求参数 diff --git a/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java b/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java index 824b4ad..11db12b 100644 --- a/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java +++ b/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java @@ -4,7 +4,6 @@ import android.content.Context; import android.content.res.Resources; import java.io.IOException; -import java.net.HttpCookie; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Date; @@ -131,7 +130,7 @@ public class Net { if (cookies != null) { cookie_builder.append("; "); for (String cookie_resp : cookies) { - cookie_builder.append(cookie_resp.substring(0,cookie_resp.indexOf(";")+1)+" "); + cookie_builder.append(cookie_resp.substring(0, cookie_resp.indexOf(";") + 1)).append(" "); } } LoginRequest.cookie=cookie_builder.toString(); @@ -141,7 +140,7 @@ public class Net { } if(VPNToken != null) { //获取 Cookie 判断是否登录成功 - HttpConnectionAndCode VPNGetCookieRequest = Get.get( + return Get.get( resources.getString(R.string.vpn_get_cookie) + "&vpn_timestamp=" + new Date().getTime(), null, resources.getString(R.string.user_agent), @@ -155,7 +154,6 @@ public class Net { null, 10000, null); - return VPNGetCookieRequest; } return LoginRequest; } catch (Exception ignored) { diff --git a/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java b/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java index 37d694b..36d1994 100644 --- a/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java +++ b/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java @@ -63,20 +63,16 @@ public class StaticService { } return "ERROR0"; } else { + String Cookie; if(VPNToken == null) { - String Cookie = response.cookie; - if (Cookie.contains("TGT-")) { - return Cookie; - } else { - return "ERROR1"; - } + Cookie = response.cookie; } else { - String Cookie = response.comment; - if (Cookie.contains("TGT-")) { - return Cookie; - } else { - return "ERROR1"; - } + Cookie = response.comment; + } + if (Cookie.contains("TGT-")) { + return Cookie; + } else { + return "ERROR1"; } } } -- Gitee From c423e7a0c8e904d10e1b52691e61e35a6a626214 Mon Sep 17 00:00:00 2001 From: wing <843862803@qq.com> Date: Tue, 21 Feb 2023 22:02:07 +0800 Subject: [PATCH 3/5] =?UTF-8?q?perf:=E5=8E=BB=E6=8E=89=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 - .../yvyan/guettable/Gson/InnovationScore.java | 148 ------- .../guettable/fragment/MoreFragment.java | 32 +- .../moreFun/InnovationScoreActivity.java | 142 ------- .../yvyan/guettable/service/fetch/Net.java | 52 --- .../service/fetch/StaticService.java | 42 -- app/src/main/res/drawable/btn_confirm.xml | 8 - app/src/main/res/drawable/btn_ignore.xml | 8 - app/src/main/res/drawable/d_shengji.png | Bin 9799 -> 0 bytes app/src/main/res/drawable/m_fail.xml | 86 ----- .../main/res/drawable/m_innovation_score.xml | 23 -- app/src/main/res/drawable/m_loading.xml | 96 ----- .../main/res/layout/activity_help_test.xml | 1 - .../res/layout/activity_innovation_score.xml | 363 ------------------ app/src/main/res/layout/activity_login.xml | 2 - .../main/res/layout/activity_personalized.xml | 4 - .../main/res/layout/activity_q_q_group.xml | 2 - .../res/layout/activity_selected_course.xml | 4 - app/src/main/res/layout/activity_widget.xml | 2 - app/src/main/res/layout/fragement_more.xml | 44 +-- app/src/main/res/layout/fragement_person.xml | 1 - .../main/res/layout/fragment_day_class.xml | 1 - app/src/main/res/layout/general_dialog.xml | 1 - app/src/main/res/layout/more_func_fail.xml | 31 -- app/src/main/res/layout/more_func_loading.xml | 34 -- .../res/layout/planned_course_cardview.xml | 1 - app/src/main/res/layout/score_cardview.xml | 1 - .../res/layout/selected_course_cardview.xml | 2 - app/src/main/res/layout/update_dialog.xml | 126 ------ app/src/main/res/layout/update_dialog_new.xml | 142 ------- app/src/main/res/menu/web_popmenu.xml | 4 +- .../main/res/mipmap-xxhdpi/huojian_blue.png | Bin 58526 -> 0 bytes app/src/main/res/values/array.xml | 4 - app/src/main/res/values/strings.xml | 14 - 34 files changed, 13 insertions(+), 1409 deletions(-) delete mode 100644 app/src/main/java/top/yvyan/guettable/Gson/InnovationScore.java delete mode 100644 app/src/main/java/top/yvyan/guettable/moreFun/InnovationScoreActivity.java delete mode 100644 app/src/main/res/drawable/btn_confirm.xml delete mode 100644 app/src/main/res/drawable/btn_ignore.xml delete mode 100644 app/src/main/res/drawable/d_shengji.png delete mode 100644 app/src/main/res/drawable/m_fail.xml delete mode 100644 app/src/main/res/drawable/m_innovation_score.xml delete mode 100644 app/src/main/res/drawable/m_loading.xml delete mode 100644 app/src/main/res/layout/activity_innovation_score.xml delete mode 100644 app/src/main/res/layout/more_func_fail.xml delete mode 100644 app/src/main/res/layout/more_func_loading.xml delete mode 100644 app/src/main/res/layout/update_dialog.xml delete mode 100644 app/src/main/res/layout/update_dialog_new.xml delete mode 100644 app/src/main/res/mipmap-xxhdpi/huojian_blue.png diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 05806d5..3ca2ab0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -56,7 +56,6 @@ - diff --git a/app/src/main/java/top/yvyan/guettable/Gson/InnovationScore.java b/app/src/main/java/top/yvyan/guettable/Gson/InnovationScore.java deleted file mode 100644 index 6a150e5..0000000 --- a/app/src/main/java/top/yvyan/guettable/Gson/InnovationScore.java +++ /dev/null @@ -1,148 +0,0 @@ -package top.yvyan.guettable.Gson; - -public class InnovationScore { - private String stid; - private String grade; - private String spno; - private String name; - private String spname; - private String dptno; - private String dptname; - private String classno; - private String msg; - private double pass; - private double lack; - private double lb1; - private double lb21; - private double lb22; - private double lb3; - private String changetype; - - public String getStid() { - return stid; - } - - public void setStid(String stid) { - this.stid = stid; - } - - public String getGrade() { - return grade; - } - - public void setGrade(String grade) { - this.grade = grade; - } - - public String getSpno() { - return spno; - } - - public void setSpno(String spno) { - this.spno = spno; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getSpname() { - return spname; - } - - public void setSpname(String spname) { - this.spname = spname; - } - - public String getDptno() { - return dptno; - } - - public void setDptno(String dptno) { - this.dptno = dptno; - } - - public String getDptname() { - return dptname; - } - - public void setDptname(String dptname) { - this.dptname = dptname; - } - - public String getClassno() { - return classno; - } - - public void setClassno(String classno) { - this.classno = classno; - } - - public String getMsg() { - return msg; - } - - public void setMsg(String msg) { - this.msg = msg; - } - - public double getPass() { - return pass; - } - - public void setPass(double pass) { - this.pass = pass; - } - - public double getLack() { - return lack; - } - - public void setLack(double lack) { - this.lack = lack; - } - - public double getLb1() { - return lb1; - } - - public void setLb1(double lb1) { - this.lb1 = lb1; - } - - public double getLb21() { - return lb21; - } - - public void setLb21(double lb21) { - this.lb21 = lb21; - } - - public double getLb22() { - return lb22; - } - - public void setLb22(double lb22) { - this.lb22 = lb22; - } - - public double getLb3() { - return lb3; - } - - public void setLb3(double lb3) { - this.lb3 = lb3; - } - - public String getChangetype() { - return changetype; - } - - public void setChangetype(String changetype) { - this.changetype = changetype; - } -} diff --git a/app/src/main/java/top/yvyan/guettable/fragment/MoreFragment.java b/app/src/main/java/top/yvyan/guettable/fragment/MoreFragment.java index 29d440a..21b6891 100644 --- a/app/src/main/java/top/yvyan/guettable/fragment/MoreFragment.java +++ b/app/src/main/java/top/yvyan/guettable/fragment/MoreFragment.java @@ -11,8 +11,6 @@ import androidx.fragment.app.Fragment; import com.umeng.cconfig.UMRemoteConfig; -import java.util.Objects; - import top.yvyan.guettable.R; import top.yvyan.guettable.data.GeneralData; import top.yvyan.guettable.data.SingleSettingData; @@ -21,7 +19,6 @@ import top.yvyan.guettable.moreFun.ExamActivity; import top.yvyan.guettable.moreFun.ExamScoreActivity; import top.yvyan.guettable.moreFun.ExperimentScoreActivity; import top.yvyan.guettable.moreFun.GradesActivity; -import top.yvyan.guettable.moreFun.InnovationScoreActivity; import top.yvyan.guettable.moreFun.LibActivity; import top.yvyan.guettable.moreFun.MoreUrlActivity; import top.yvyan.guettable.moreFun.PlannedCoursesActivity; @@ -55,7 +52,7 @@ public class MoreFragment extends Fragment implements View.OnClickListener { //透明状态栏 View addStatus = view.findViewById(R.id.add_status); ViewGroup.LayoutParams lp = addStatus.getLayoutParams(); - lp.height = lp.height + AppUtil.getStatusBarHeight(Objects.requireNonNull(getContext())); + lp.height = lp.height + AppUtil.getStatusBarHeight(requireContext()); addStatus.setLayoutParams(lp); view.findViewById(R.id.more_test_schedule).setOnClickListener(this); @@ -68,7 +65,6 @@ public class MoreFragment extends Fragment implements View.OnClickListener { view.findViewById(R.id.more_plan_courses).setOnClickListener(this); view.findViewById(R.id.more_cet).setOnClickListener(this); - view.findViewById(R.id.more_innovation_score).setOnClickListener(this); view.findViewById(R.id.more_url_bkjw).setOnClickListener(this); view.findViewById(R.id.more_url_vpn).setOnClickListener(this); @@ -109,7 +105,7 @@ public class MoreFragment extends Fragment implements View.OnClickListener { @Override public void onStart() { super.onStart(); - setBackground(BackgroundUtil.isSetBackground(Objects.requireNonNull(getContext()))); + setBackground(BackgroundUtil.isSetBackground(requireContext())); initData(); } @@ -164,14 +160,6 @@ public class MoreFragment extends Fragment implements View.OnClickListener { intent = new Intent(getContext(), CETActivity.class); startActivity(intent); break; - case R.id.more_innovation_score: - if (generalData.isInternational()) { - DialogUtil.showTextDialog(getContext(), "国际学院教务系统暂无此功能"); - } else { - intent = new Intent(getContext(), InnovationScoreActivity.class); - startActivity(intent); - } - break; case R.id.more_url_bkjw: @@ -181,16 +169,16 @@ public class MoreFragment extends Fragment implements View.OnClickListener { CommFunc.noLoginWebVPN(getActivity()); break; case R.id.more_url_campus: - openBrowser(Objects.requireNonNull(getContext()).getResources().getString(R.string.url_smart_campus)); + openBrowser(requireContext().getResources().getString(R.string.url_smart_campus)); break; case R.id.more_url_lijiang: CommFunc.noLoginWebVPN(getActivity(), - Objects.requireNonNull(getContext()).getResources().getString(R.string.url_lijiang), - Objects.requireNonNull(getContext()).getResources().getString(R.string.url_lijiang_vpn)); + requireContext().getResources().getString(R.string.url_lijiang), + requireContext().getResources().getString(R.string.url_lijiang_vpn)); break; case R.id.more_url_graduation_project: - openBrowser(Objects.requireNonNull(getContext()).getResources().getString(R.string.url_graduation_project)); + openBrowser(requireContext().getResources().getString(R.string.url_graduation_project)); break; case R.id.more_url_index: openBrowser(UMRemoteConfig.getInstance().getConfigValue("guetYvyanTop")); @@ -203,13 +191,13 @@ public class MoreFragment extends Fragment implements View.OnClickListener { case R.id.more_course_arrange: CommFunc.noLoginWebVPN(getActivity(), - Objects.requireNonNull(getContext()).getResources().getString(R.string.url_course_arrange), - Objects.requireNonNull(getContext()).getResources().getString(R.string.url_course_arrange_vpn)); + requireContext().getResources().getString(R.string.url_course_arrange), + requireContext().getResources().getString(R.string.url_course_arrange_vpn)); break; case R.id.more_empty_room: CommFunc.noLoginWebVPN(getActivity(), - Objects.requireNonNull(getContext()).getResources().getString(R.string.url_empty_room), - Objects.requireNonNull(getContext()).getResources().getString(R.string.url_empty_room_vpn)); + requireContext().getResources().getString(R.string.url_empty_room), + requireContext().getResources().getString(R.string.url_empty_room_vpn)); break; case R.id.more_qq_group: intent = new Intent(getContext(), QQGroupActivity.class); diff --git a/app/src/main/java/top/yvyan/guettable/moreFun/InnovationScoreActivity.java b/app/src/main/java/top/yvyan/guettable/moreFun/InnovationScoreActivity.java deleted file mode 100644 index bd7893f..0000000 --- a/app/src/main/java/top/yvyan/guettable/moreFun/InnovationScoreActivity.java +++ /dev/null @@ -1,142 +0,0 @@ -package top.yvyan.guettable.moreFun; - -import android.annotation.SuppressLint; -import android.os.Bundle; -import android.view.View; -import android.widget.TextView; - -import androidx.appcompat.app.AppCompatActivity; -import androidx.constraintlayout.widget.ConstraintLayout; - -import com.xuexiang.xui.widget.button.ButtonView; - -import butterknife.BindView; -import butterknife.ButterKnife; -import top.yvyan.guettable.Gson.BaseResponse; -import top.yvyan.guettable.Gson.InnovationScore; -import top.yvyan.guettable.R; -import top.yvyan.guettable.data.SingleSettingData; -import top.yvyan.guettable.service.IMoreFun; -import top.yvyan.guettable.service.MoreFunService; -import top.yvyan.guettable.service.fetch.StaticService; -import top.yvyan.guettable.util.AppUtil; -import top.yvyan.guettable.util.BackgroundUtil; -import top.yvyan.guettable.util.ToastUtil; - -@SuppressLint("NonConstantResourceId") -public class InnovationScoreActivity extends AppCompatActivity implements View.OnClickListener, IMoreFun { - - @BindView(R.id.state) - TextView innovationScoreState; - @BindView(R.id.title) - TextView title; - @BindView(R.id.innovation_dptName) - TextView innovation_dptName; - @BindView(R.id.innovation_major) - TextView innovation_major; - @BindView(R.id.innovation_grade) - TextView innovation_grade; - @BindView(R.id.innovation_studentNumber) - TextView innovation_studentNumber; - @BindView(R.id.innovation_studentName) - TextView innovation_studentName; - @BindView(R.id.innovation_basicScore) - TextView innovationScore_Basic; - @BindView(R.id.innovation_basicScore_train) - TextView innovationScore_Train; - @BindView(R.id.innovation_basicScore_course) - TextView innovationScore_Course; - @BindView(R.id.innovation_practise) - TextView innovationScore_pratise; - @BindView(R.id.innovation_lack) - TextView innovationScore_Lack; - @BindView(R.id.innovation_btn_update) - ButtonView btn_update_innovationScore; - @BindView(R.id.func_base_constraintLayout) - ConstraintLayout header; - - private BaseResponse innovationScoreBaseResponse; - private MoreFunService moreFunService; - private String cookie; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - SingleSettingData singleSettingData = SingleSettingData.newInstance(getApplicationContext()); - BackgroundUtil.setPageTheme(this, singleSettingData.getThemeId()); - setContentView(R.layout.activity_innovation_score); - ButterKnife.bind(this); - header.getBackground().setAlpha(255); - title.setText(getString(R.string.moreFun_innovation_score)); - BackgroundUtil.setFullAlphaStatus(this); - btn_update_innovationScore.setOnClickListener(this); - AppUtil.reportFunc(getApplicationContext(), getString(R.string.moreFun_innovation_score)); - - moreFunService = new MoreFunService(this, this); - moreFunService.update(); - } - - @Override - public void onClick(View view) { - switch (view.getId()) { - case R.id.back: - finish(); - break; - case R.id.innovation_btn_update: - new Thread(() -> { - runOnUiThread(() -> ToastUtil.showToast(this, "正在更新,请耐心等候")); - int result = StaticService.updateInnovationScore(this, cookie); - if (result == 0) { - moreFunService.update(); - runOnUiThread(() -> ToastUtil.showToast(this, "更新数据成功")); - } else { - runOnUiThread(() -> ToastUtil.showToast(this, "更新失败,请稍后重试")); - } - }).start(); - break; - } - } - - @Override - public int updateData(String cookie) { - this.cookie = cookie; - innovationScoreBaseResponse = StaticService.getInnovationScore(this, cookie); - if (innovationScoreBaseResponse != null) { - return 5; - } - return 1; - } - - @Override - public void updateView(String hint, int state) { - innovationScoreState.setText(hint); - if (state == 5) { - updateView(); - } else if (state == 2 || state == -1 || state == -2 || state == -3) { - View loading = findViewById(R.id.page_loading); - View fail = findViewById(R.id.page_fail); - loading.setVisibility(View.GONE); - fail.setVisibility(View.VISIBLE); - } - } - - private void updateView() { - View wait = findViewById(R.id.innovation_waite); - wait.setVisibility(View.GONE); - InnovationScore innovationScore = innovationScoreBaseResponse.getData(); - innovation_dptName.setText(innovationScore.getDptname()); - innovation_grade.setText(innovationScore.getGrade()); - innovation_major.setText(innovationScore.getSpname()); - innovation_studentName.setText(innovationScore.getName()); - innovation_studentNumber.setText(innovationScore.getStid()); - innovationScore_Basic.setText(String.valueOf(innovationScore.getLb1())); - innovationScore_Course.setText(String.valueOf(innovationScore.getLb21())); - innovationScore_Train.setText(String.valueOf(innovationScore.getLb22())); - innovationScore_pratise.setText(String.valueOf(innovationScore.getLb3())); - innovationScore_Lack.setText(String.valueOf(innovationScore.getLack())); - } - - public void doBack(View view) { - finish(); - } -} \ No newline at end of file diff --git a/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java b/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java index 11db12b..7954e0b 100644 --- a/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java +++ b/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java @@ -522,58 +522,6 @@ public class Net { ); } - /** - * 查询创新积分 - * - * @param context context - * @param cookie cookie - * @param isVPN 是否外网 - * @return 操作结果 - */ - public static HttpConnectionAndCode getInnovationScore(Context context, String cookie, boolean isVPN) { - Resources resources = context.getResources(); - return Get.get(UrlReplaceUtil.getUrlByVPN(isVPN, resources.getString(R.string.lan_get_innovationScore)), - null, - resources.getString(R.string.user_agent), - UrlReplaceUtil.getUrlByVPN(isVPN, UrlReplaceUtil.getUrlByInternational(GeneralData.newInstance(context).isInternational(), resources.getString(R.string.lan_referer))), - cookie, - "]}", - null, - resources.getString(R.string.lan_login_success_contain_response_text), - null, - null, - null, - null, - null - ); - } - - /** - * 更新创新积分 - * - * @param context context - * @param cookie cookie - * @param isVPN 是否外网 - * @return 操作结果 - */ - public static HttpConnectionAndCode updateInnovationScore(Context context, String cookie, boolean isVPN) { - Resources resources = context.getResources(); - return Post.post( - UrlReplaceUtil.getUrlByVPN(isVPN, resources.getString(R.string.lan_update_innovationScore)), - null, - resources.getString(R.string.user_agent), - UrlReplaceUtil.getUrlByVPN(isVPN, UrlReplaceUtil.getUrlByInternational(GeneralData.newInstance(context).isInternational(), resources.getString(R.string.lan_referer))), - null, - cookie, - "}", - null, - resources.getString(R.string.lan_login_success_contain_response_text), - null, - null, - null - ); - } - /** * 查询已选课程 diff --git a/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java b/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java index 36d1994..b8d7292 100644 --- a/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java +++ b/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java @@ -23,7 +23,6 @@ import top.yvyan.guettable.Gson.ExamInfo; import top.yvyan.guettable.Gson.ExamScore; import top.yvyan.guettable.Gson.ExperimentScore; import top.yvyan.guettable.Gson.Grades; -import top.yvyan.guettable.Gson.InnovationScore; import top.yvyan.guettable.Gson.LabTable; import top.yvyan.guettable.Gson.PlannedCourse; import top.yvyan.guettable.Gson.Resit; @@ -590,47 +589,6 @@ public class StaticService { } } - /** - * 查询创新积分 - * - * @param context context - * @param cookie cookie - * @return 操作结果 - */ - public static BaseResponse getInnovationScore(Context context, String cookie) { - HttpConnectionAndCode httpConnectionAndCode = Net.getInnovationScore(context, cookie, TokenData.isVPN); - if (httpConnectionAndCode.comment != null) { - BaseResponse result; - try { - result = new Gson().fromJson(httpConnectionAndCode.comment.replaceAll("[\\[\\]]", ""), new TypeToken>() { - }.getType()); - } catch (Exception ignored) { - return null; - } - return result; - } else { - return null; - } - } - - /** - * 更新创新积分 - * - * @param context context - * @param cookie cookie - * @return 更新结果 - * -1 更新失败 - * 0 更新成功 - */ - public static int updateInnovationScore(Context context, String cookie) { - HttpConnectionAndCode httpConnectionAndCode = Net.updateInnovationScore(context, cookie, TokenData.isVPN); - String comment = httpConnectionAndCode.comment; - if (comment != null && comment.contains("操作成功")) { - return 0; - } - return -1; - } - /** * 查询已选课程 * diff --git a/app/src/main/res/drawable/btn_confirm.xml b/app/src/main/res/drawable/btn_confirm.xml deleted file mode 100644 index 256ca24..0000000 --- a/app/src/main/res/drawable/btn_confirm.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_ignore.xml b/app/src/main/res/drawable/btn_ignore.xml deleted file mode 100644 index 347d69c..0000000 --- a/app/src/main/res/drawable/btn_ignore.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/d_shengji.png b/app/src/main/res/drawable/d_shengji.png deleted file mode 100644 index b397f676cded3fd7165190baebc92a87d7b0fdbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9799 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 - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/m_innovation_score.xml b/app/src/main/res/drawable/m_innovation_score.xml deleted file mode 100644 index a32f15a..0000000 --- a/app/src/main/res/drawable/m_innovation_score.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/drawable/m_loading.xml b/app/src/main/res/drawable/m_loading.xml deleted file mode 100644 index c03c930..0000000 --- a/app/src/main/res/drawable/m_loading.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/activity_help_test.xml b/app/src/main/res/layout/activity_help_test.xml index c212a90..5b2965d 100644 --- a/app/src/main/res/layout/activity_help_test.xml +++ b/app/src/main/res/layout/activity_help_test.xml @@ -34,7 +34,6 @@ app:layout_constraintGuide_percent="0.5" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index c4c25ed..1488252 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -164,7 +164,6 @@ app:layout_constraintTop_toTopOf="parent"> diff --git a/app/src/main/res/layout/activity_q_q_group.xml b/app/src/main/res/layout/activity_q_q_group.xml index 01c5c3c..561c832 100644 --- a/app/src/main/res/layout/activity_q_q_group.xml +++ b/app/src/main/res/layout/activity_q_q_group.xml @@ -131,7 +131,6 @@ android:background="@color/xui_config_color_gray_9" /> @@ -144,7 +143,6 @@ app:layout_constraintGuide_begin="60dp" /> + - - - - + tools:ignore="UselessLeaf"> @@ -405,7 +377,6 @@ android:orientation="vertical"> diff --git a/app/src/main/res/layout/more_func_fail.xml b/app/src/main/res/layout/more_func_fail.xml deleted file mode 100644 index 04fe0ff..0000000 --- a/app/src/main/res/layout/more_func_fail.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/more_func_loading.xml b/app/src/main/res/layout/more_func_loading.xml deleted file mode 100644 index dc08f8b..0000000 --- a/app/src/main/res/layout/more_func_loading.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/planned_course_cardview.xml b/app/src/main/res/layout/planned_course_cardview.xml index 877438c..82d2e30 100644 --- a/app/src/main/res/layout/planned_course_cardview.xml +++ b/app/src/main/res/layout/planned_course_cardview.xml @@ -35,7 +35,6 @@ app:layout_constraintGuide_percent="0.8" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -