├── .gitignore
├── .idea
├── .name
├── compiler.xml
├── copyright
│ └── profiles_settings.xml
├── dictionaries
│ └── jin123d.xml
├── encodings.xml
├── gradle.xml
├── misc.xml
├── modules.xml
├── runConfigurations.xml
└── vcs.xml
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── jin123d
│ │ └── urp
│ │ └── ApplicationTest.java
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── jin123d
│ │ ├── Interface
│ │ ├── GetCodeListener.java
│ │ ├── HttpListener.java
│ │ └── UrpUserListener.java
│ │ ├── adapter
│ │ ├── CjAdapter.java
│ │ ├── JxpgAdapter.java
│ │ ├── MainAdapter.java
│ │ └── ZjsjAdapter.java
│ │ ├── app
│ │ ├── BaseActivity.java
│ │ ├── BaseFragment.java
│ │ └── UrpApplication.java
│ │ ├── fragment
│ │ ├── CjBjgFragment.java
│ │ └── CjJgFragment.java
│ │ ├── models
│ │ ├── CjModels.java
│ │ ├── JxpgModels.java
│ │ ├── KbModels.java
│ │ ├── MainModels.java
│ │ ├── PgInfoModels.java
│ │ ├── TzggModels.java
│ │ └── ZjsjModels.java
│ │ ├── urp
│ │ ├── AboutActivity.java
│ │ ├── ChangeColorActivity.java
│ │ ├── CjActivity.java
│ │ ├── JxpgListActivity.java
│ │ ├── KbActivity.java
│ │ ├── Loading.java
│ │ ├── LoginActivity.java
│ │ ├── MainActivity.java
│ │ ├── NewsActivity.java
│ │ ├── TzggActivity.java
│ │ ├── WebActivity.java
│ │ ├── XfjdActivity.java
│ │ ├── XjxxActivity.java
│ │ └── ZjsjActivity.java
│ │ └── util
│ │ ├── ErrorCode.java
│ │ ├── HttpUtil.java
│ │ ├── JsoupUtil.java
│ │ ├── SpCache.java
│ │ ├── UrlUtil.java
│ │ ├── UrpSpUtil.java
│ │ ├── UrpUrl.java
│ │ └── okgo
│ │ ├── JsoupCallBack.java
│ │ └── JsoupConvert.java
│ └── res
│ ├── drawable-v21
│ └── selectorbtn.xml
│ ├── drawable
│ ├── ic_action_location_found_dark.png
│ ├── ic_check_black_24dp.xml
│ ├── ic_create_black_48dp.xml
│ ├── ic_date_range_black_48dp.xml
│ ├── ic_delete_black_48dp.xml
│ ├── ic_description_black_48dp.xml
│ ├── ic_notifications_none_black_48dp.xml
│ ├── ic_person_black_48dp.xml
│ ├── ic_plus.png
│ ├── ic_toc_black_48dp.xml
│ ├── list_item_divider.xml
│ ├── nav_header_bg.jpg
│ ├── nuuneoi.png
│ └── selectorbtn.xml
│ ├── layout
│ ├── activity_about.xml
│ ├── activity_change_color.xml
│ ├── activity_cj.xml
│ ├── activity_content.xml
│ ├── activity_jxpg_list.xml
│ ├── activity_kb.xml
│ ├── activity_loading.xml
│ ├── activity_login.xml
│ ├── activity_main.xml
│ ├── activity_news.xml
│ ├── activity_tzgg.xml
│ ├── activity_web.xml
│ ├── activity_xfjd.xml
│ ├── activity_xjxx.xml
│ ├── activity_zjsj.xml
│ ├── fragment_cjbjg.xml
│ ├── fragment_cjjg.xml
│ ├── layout_cj.xml
│ ├── layout_jxpg.xml
│ ├── layout_jxpg_title.xml
│ ├── layout_main.xml
│ ├── layout_title.xml
│ ├── layout_title_back.xml
│ ├── layout_yzm.xml
│ ├── layout_zjsj.xml
│ ├── layoutnosuch.xml
│ └── nav_header.xml
│ ├── menu
│ ├── menu_cj.xml
│ ├── menu_content.xml
│ ├── menu_jxpg_list.xml
│ ├── menu_login.xml
│ ├── menu_main.xml
│ ├── menu_xfjd.xml
│ └── navigation_drawer_items.xml
│ ├── mipmap-hdpi
│ └── ic_launcher.png
│ ├── mipmap-mdpi
│ └── ic_launcher.png
│ ├── mipmap-xhdpi
│ ├── ic_done_white_24dp.png
│ └── ic_launcher.png
│ ├── mipmap-xxhdpi
│ ├── cj_2.png
│ ├── ic_color_lens_grey600_48dp.png
│ ├── ic_done_white_24dp.png
│ ├── ic_file_download_grey600_48dp.png
│ ├── ic_help_grey600_48dp.png
│ ├── ic_launcher.png
│ ├── ic_settings_grey600_48dp.png
│ ├── icon.png
│ ├── kb_2.png
│ ├── pj_2.png
│ ├── tcdl_2.png
│ ├── tzgg_2.png
│ ├── xfjd_2.png
│ ├── xjxx_2.png
│ └── zzsj_2.png
│ ├── mipmap-xxxhdpi
│ └── ic_launcher.png
│ ├── values-v21
│ └── styles.xml
│ ├── values-w820dp
│ └── dimens.xml
│ └── values
│ ├── attrs.xml
│ ├── colors.xml
│ ├── dimens.xml
│ ├── strings.xml
│ └── styles.xml
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── pic
├── device-2015-11-17-120028-169x300.png
├── device-2015-11-17-131737-169x300.png
├── device-2015-11-17-132020-169x300.png
├── device-2015-11-17-132059-169x300.png
├── device-2015-11-17-132139-169x300.png
├── device-2015-11-17-132210-169x300.png
├── device-2015-11-17-132211-169x300.png
├── device-2016-05-19-232221.png
├── device-2016-05-19-232417.png
├── urp.apk
└── urp_v1.2.apk
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | /.idea/misc.xml
7 | /.idea/modules.xml
8 | /.idea
9 | .DS_Store
10 | /build
11 | /captures
12 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | URP
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/dictionaries/jin123d.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
18 |
19 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | TyutURP 第三方客户端
2 | ===================================
3 | [APK预览](https://github.com/jin123d/URP/blob/master/pic/urp_v1.2.apk?raw=true)
4 |
5 | [太原理工校外访问综合教务系统及教学管理系统SSL VPN客户端程序说明](http://jwc.tyut.edu.cn/info/1057/1304.htm)
6 |
7 | ## 功能实现
8 | - [x] 学籍信息(实现)
9 | - [x] 成绩(实现)
10 | - [ ] 本学期成绩
11 | - [x] 自主实践(实现)
12 | - [x] 学分绩点(实现)
13 | - [ ] 本学期课表
14 | - [x] 一键评教(实现)注:中期评教/期末评教
15 | - [x] 通知公告(实现)注:UI需要改进
16 | - [ ] 主题切换
17 |
18 | ## 项目范围
19 | > * 网络请求
20 | > * JSOUP解析
21 | > * 验证码Cookie(自动登录等)
22 | > * Session验证
23 | > * 本地数据保存
24 | > * Material Design风格
25 |
26 | ## 截图预览
27 | 
28 | 
29 | 
30 |
31 | 
32 | 
33 | 
34 |
35 | 
36 |
37 | ## 开发进度
38 | ### v_1.0
39 | >* (优化)大幅度开始重构
40 |
41 | ### v_0.99
42 | > * (更新)一键评教功能更新为期末评教
43 | > * (更新)评估内容取消小尾巴,内容为:good
44 | > * (修复)不及格成绩获取页面加入了未评教信息验证,防止App崩溃
45 | > * (优化)自主实践查询页面加入提示信息,提高友好度
46 | > * (修复)Activity跳转闪屏的问题
47 | > * (更新)提示框样式修改
48 |
49 | ### v_0.98
50 | > * (修复)修复教务处网站改版后客户端无法获取到通知公告的BUG
51 | > * (增加)增加了自动更新功能
52 |
53 | ### v_0.97
54 | > * (修复)修复成绩界面在API17下错乱的BUG
55 | > * (优化)优化一部分Dialog
56 |
57 | ### v_0.96
58 | > * (优化)优化查询线程
59 |
60 | ### v_0.95
61 | > * (增加)增加侧边栏
62 | > * (修复)修复一个因为逻辑错误导致无限重复登录的bug
63 | > * (增加)关于界面
64 |
65 | ### v_0.92
66 | > * (调整)主界面UI,根据material design
67 | > * (调整)更换签名为正式版签名
68 |
69 | ### v_0.91
70 |
71 | > * (修复)修复评教内容中文乱码的bug,
72 | > * (增加)增加关于界面
73 |
74 | ### v_0.9
75 | > * (增加)增加一键评教功能:10s就可以评估完成20门以上科目
76 |
77 | ### v_0.8
78 | > * (修复)登录时获取数据超时处理
79 |
80 | ### v_0.7
81 | > * (增加)本学期课表(尚未完成)
82 | > * (增加)通知公告逻辑完成,UI需要继续调整
83 |
84 | ### v_0.6
85 | > * (修改)主页面改为列表形式,加入图标
86 | > * (修改)调整登录页面UI,调整登录button
87 | > * (增加)成绩查询中加入不及格成绩的统计信息(尚未通过、曾经未通过)
88 | > * (修改)登录页面的Toast一部分修改为Snackbar
89 |
90 | ### v_0.5
91 | > * (增加)不及格成绩完成(尚不及格、曾不及格)
92 | > * (修改)修改tabIndicatorColor和colorAccent
93 | > * (修改)调整成绩查询页面UI
94 |
95 | ### v_0.4
96 | > * (增加)取消Actionbar,替换为Toolbar
97 | > * (增加)加入material design颜色处理
98 | > * (增加)成绩查询中采用TabLayout 制作选项卡,选项卡制作完成,不及格成绩未完成
99 | > * (增加)头部加入AppBarLayout,按照Google规范
100 |
101 | ### v_0.3
102 | > * (增加)全局加入请求超时处理,防止卡死
103 | > * (修复)修复一些可能导致崩溃的bug
104 | > * (优化)自主实践查询中字体过大导致显示不完整的bug
105 | > * (修复)全局ProgressBarDialog提示修正
106 | > * (修复)进入APP后验证码获取时修复progressbar的正常显示
107 | > * (增加)增加登录失败提示信息(如密码错误、验证码错误等)
108 |
109 | ### v_0.2
110 | > * (增加)获取验证码时将验证码输入框置空
111 | > * (更新)界面主题更换为DarkActionbar
112 | > * (增加)退出登录加入提示
113 | > * (增加)增加父级Activity
114 | > * (增加)双击退出,防止误操作
115 |
116 | ### v_0.1
117 | > * 登录urp
118 | > * 获取及格成绩、个人信息、自主实践、学分绩点
119 | > * 记住密码、自动登录功能
120 | > * 退出登录功能
121 | > * 及格成绩和自主实践采用baseAdapter
122 |
123 |
124 | -----------------------------------
125 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 25
5 | buildToolsVersion '25.0.0'
6 | defaultConfig {
7 | applicationId "com.jin123d.urp"
8 | minSdkVersion 14
9 | targetSdkVersion 25
10 | versionCode 22
11 | versionName '1.2'
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 | productFlavors {
20 | }
21 | }
22 |
23 | dependencies {
24 | compile fileTree(include: ['*.jar'], dir: 'libs')
25 | compile 'com.android.support:appcompat-v7:25.0.1'
26 | compile 'com.android.support:support-v4:25.0.1'
27 | compile 'com.android.support:support-v13:25.0.1'
28 | compile 'org.jsoup:jsoup:1.8.3'
29 | compile 'com.android.support:design:25.0.1'
30 | compile 'com.zhy:base-adapter:2.0.0'
31 | compile 'com.lzy.net:okgo:2.0.0'
32 | }
33 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in H:\adt-bundle/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/jin123d/urp/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.app.Application;
4 | import android.test.ApplicationTestCase;
5 |
6 | /**
7 | * Testing Fundamentals
8 | */
9 | public class ApplicationTest extends ApplicationTestCase {
10 | public ApplicationTest() {
11 | super(Application.class);
12 | }
13 | }
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
13 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
27 |
31 |
35 |
39 |
43 |
48 |
52 |
56 |
60 |
63 |
67 |
71 |
75 |
76 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/Interface/GetCodeListener.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.Interface;
2 |
3 | import android.graphics.Bitmap;
4 |
5 | /**
6 | * Created by hekr_jds on 11/15 0015.
7 | **/
8 |
9 | public interface GetCodeListener extends HttpListener {
10 | void getSuccess(Bitmap bitmap);
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/Interface/HttpListener.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.Interface;
2 |
3 | /**
4 | * Created by hekr_jds on 11/15 0015.
5 | **/
6 |
7 | public interface HttpListener {
8 | void getError(String errorMsg);
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/Interface/UrpUserListener.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.Interface;
2 |
3 | import com.jin123d.models.CjModels;
4 | import com.jin123d.models.PgInfoModels;
5 | import com.jin123d.models.ZjsjModels;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * Created by jin123d on 11/5 0005.
11 | **/
12 |
13 | public class UrpUserListener {
14 |
15 | interface IsLoginListener {
16 | void loginFailed(String error);
17 | }
18 |
19 | public interface UserStateListener extends IsLoginListener {
20 | void loginSuccess();
21 | }
22 |
23 |
24 | /**
25 | * 获取用户信息回调/学分绩点
26 | */
27 | public interface GetInfoListener extends IsLoginListener {
28 | void getUserInfoSuccess(String str);
29 | }
30 |
31 | /**
32 | * 获取用户成绩回调
33 | */
34 | public interface GetGradeListener extends IsLoginListener {
35 | void getGradeSuccess(List lists);
36 | }
37 |
38 | /**
39 | * 获取用户自主实践回调
40 | */
41 | public interface GetZjsjListener extends IsLoginListener {
42 | void getZjsjSuccess(List list);
43 | }
44 |
45 | public interface GetPgInfoListener extends IsLoginListener {
46 | void getPgInfoListener(List list);
47 | }
48 |
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/adapter/CjAdapter.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.adapter;
2 |
3 | import android.content.Context;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.BaseAdapter;
8 | import android.widget.TextView;
9 |
10 | import com.jin123d.models.CjModels;
11 | import com.jin123d.urp.R;
12 |
13 | import java.util.List;
14 |
15 | /**
16 | * Created by jin123d on 2015/9/14.
17 | **/
18 | public class CjAdapter extends BaseAdapter {
19 | private List lists;
20 | private Context context;
21 |
22 | public CjAdapter(List lists, Context context) {
23 | this.lists = lists;
24 | this.context = context;
25 | }
26 |
27 | @Override
28 | public int getCount() {
29 | return lists.size();
30 | }
31 |
32 | @Override
33 | public Object getItem(int position) {
34 | return lists.get(position);
35 | }
36 |
37 | @Override
38 | public long getItemId(int position) {
39 | return position;
40 | }
41 |
42 | @Override
43 | public View getView(int position, View convertView, ViewGroup parent) {
44 | ViewHolder viewHolder = null;
45 | if (convertView == null) {
46 | viewHolder = new ViewHolder();
47 | LayoutInflater inflater = LayoutInflater.from(context);
48 | convertView = inflater.inflate(R.layout.layout_cj, null);
49 | viewHolder.tv_kcm = (TextView) convertView.findViewById(R.id.tv_kcm);
50 | viewHolder.tv_xf = (TextView) convertView.findViewById(R.id.tv_xf);
51 | viewHolder.tv_cj = (TextView) convertView.findViewById(R.id.tv_cj);
52 | convertView.setTag(viewHolder);
53 | } else {
54 | viewHolder = (ViewHolder) convertView.getTag();
55 | }
56 |
57 | viewHolder.tv_kcm.setText(lists.get(position).getKcm());
58 | viewHolder.tv_cj.setText(lists.get(position).getCj());
59 | viewHolder.tv_xf.setText(lists.get(position).getXf());
60 | return convertView;
61 | }
62 |
63 | private static class ViewHolder {
64 | TextView tv_kcm;
65 | TextView tv_xf;
66 | TextView tv_cj;
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/adapter/JxpgAdapter.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.adapter;
2 |
3 | import android.content.Context;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.BaseAdapter;
8 | import android.widget.TextView;
9 |
10 | import com.jin123d.models.JxpgModels;
11 | import com.jin123d.urp.R;
12 |
13 | import java.util.List;
14 |
15 | /**
16 | * Created by jin123d on 2015/11/7.
17 | **/
18 | public class JxpgAdapter extends BaseAdapter {
19 |
20 | private List lists;
21 | private Context context;
22 |
23 | public JxpgAdapter(Context context, List lists) {
24 | this.context = context;
25 | this.lists = lists;
26 | }
27 |
28 | @Override
29 | public int getCount() {
30 | return lists.size();
31 | }
32 |
33 | @Override
34 | public Object getItem(int position) {
35 | return lists.get(position);
36 | }
37 |
38 | @Override
39 | public long getItemId(int position) {
40 | return position;
41 | }
42 |
43 | @Override
44 | public View getView(int position, View convertView, ViewGroup parent) {
45 | ViewHolder viewHolder = null;
46 | if (convertView == null) {
47 | viewHolder = new ViewHolder();
48 | LayoutInflater inflater = LayoutInflater.from(context);
49 | convertView = inflater.inflate(R.layout.layout_jxpg, null);
50 | viewHolder.tv_pgnr = (TextView) convertView.findViewById(R.id.tv_kcm);
51 | viewHolder.tv_phr = (TextView) convertView.findViewById(R.id.tv_xf);
52 | viewHolder.tv_sfpg = (TextView) convertView.findViewById(R.id.tv_cj);
53 | convertView.setTag(viewHolder);
54 | } else {
55 | viewHolder = (ViewHolder) convertView.getTag();
56 | }
57 |
58 | viewHolder.tv_pgnr.setText(lists.get(position).getPgnr());
59 | viewHolder.tv_phr.setText(lists.get(position).getBprm());
60 | viewHolder.tv_sfpg.setText(lists.get(position).getSfpg());
61 | return convertView;
62 | }
63 |
64 | private static class ViewHolder {
65 | TextView tv_pgnr;
66 | TextView tv_phr;
67 | TextView tv_sfpg;
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/adapter/MainAdapter.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.adapter;
2 |
3 | import android.content.Context;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.BaseAdapter;
8 | import android.widget.ImageView;
9 | import android.widget.TextView;
10 |
11 | import com.jin123d.models.MainModels;
12 | import com.jin123d.urp.R;
13 |
14 | import java.util.List;
15 |
16 | /**
17 | * Created by jin123d on 2015/9/20.
18 | **/
19 | public class MainAdapter extends BaseAdapter {
20 | private List lists;
21 | private Context context;
22 |
23 |
24 | public MainAdapter(List lists, Context context) {
25 | this.lists = lists;
26 | this.context = context;
27 | }
28 |
29 | @Override
30 | public int getCount() {
31 | return lists.size();
32 | }
33 |
34 | @Override
35 | public Object getItem(int position) {
36 | return lists.get(position);
37 | }
38 |
39 | @Override
40 | public long getItemId(int position) {
41 | return position;
42 | }
43 |
44 | @Override
45 | public View getView(int position, View convertView, ViewGroup parent) {
46 | ViewHolder viewHolder = null;
47 | if (convertView == null) {
48 | viewHolder = new ViewHolder();
49 | LayoutInflater inflater = LayoutInflater.from(context);
50 | convertView = inflater.inflate(R.layout.layout_main, parent,false);
51 | viewHolder.imageView = (ImageView) convertView.findViewById(R.id.img_main);
52 | viewHolder.textView = (TextView) convertView.findViewById(R.id.tv_main);
53 | convertView.setTag(viewHolder);
54 | } else {
55 | viewHolder = (ViewHolder) convertView.getTag();
56 | }
57 |
58 | viewHolder.imageView.setImageResource(lists.get(position).getImgId());
59 | viewHolder.textView.setText(lists.get(position).getName());
60 |
61 | return convertView;
62 | }
63 |
64 |
65 | private static class ViewHolder {
66 | ImageView imageView;
67 | TextView textView;
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/adapter/ZjsjAdapter.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.adapter;
2 |
3 | import android.content.Context;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.BaseAdapter;
8 | import android.widget.TextView;
9 |
10 | import com.jin123d.models.ZjsjModels;
11 | import com.jin123d.urp.R;
12 |
13 | import java.util.List;
14 |
15 | /**
16 | * Created by jin123d on 2015/9/14.
17 | **/
18 | public class ZjsjAdapter extends BaseAdapter {
19 | private List lists;
20 | private Context context;
21 |
22 | public ZjsjAdapter(List lists, Context context) {
23 | this.lists = lists;
24 | this.context = context;
25 | }
26 |
27 | @Override
28 | public int getCount() {
29 | return lists.size();
30 | }
31 |
32 | @Override
33 | public Object getItem(int position) {
34 | return lists.get(position);
35 | }
36 |
37 | @Override
38 | public long getItemId(int position) {
39 | return position;
40 | }
41 |
42 | @Override
43 | public View getView(int position, View convertView, ViewGroup parent) {
44 | ViewHolder viewHolder = null;
45 | if (convertView == null) {
46 | viewHolder = new ViewHolder();
47 | LayoutInflater inflater = LayoutInflater.from(context);
48 | convertView = inflater.inflate(R.layout.layout_zjsj, null);
49 | viewHolder.tv_mc = (TextView) convertView.findViewById(R.id.tv_mc);
50 | viewHolder.tv_bz = (TextView) convertView.findViewById(R.id.tv_bz);
51 | viewHolder.tv_xf = (TextView) convertView.findViewById(R.id.tv_xf);
52 | convertView.setTag(viewHolder);
53 | } else {
54 | viewHolder = (ViewHolder) convertView.getTag();
55 | }
56 |
57 |
58 | viewHolder.tv_mc.setText(lists.get(position).getMc());
59 | viewHolder.tv_bz.setText(lists.get(position).getBz());
60 | viewHolder.tv_xf.setText(lists.get(position).getXf());
61 | return convertView;
62 |
63 | }
64 |
65 | private static class ViewHolder {
66 | TextView tv_mc;
67 | TextView tv_bz;
68 | TextView tv_xf;
69 | }
70 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/app/BaseActivity.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.app;
2 |
3 | import android.app.ProgressDialog;
4 | import android.support.annotation.LayoutRes;
5 | import android.support.v7.app.AppCompatActivity;
6 |
7 | import com.jin123d.urp.R;
8 |
9 | /**
10 | * Created by jin123d on 11/19 0019.
11 | **/
12 |
13 | public abstract class BaseActivity extends AppCompatActivity {
14 | protected ProgressDialog progressDialog;
15 |
16 | protected abstract void initView();
17 |
18 | protected abstract void initData();
19 |
20 | /**
21 | * 重置进度框
22 | */
23 | private void resetProgressDialog() {
24 | if (progressDialog == null) {
25 | progressDialog = new ProgressDialog(this);
26 | }
27 | progressDialog.setMessage(getText(R.string.getData));
28 | progressDialog.setCancelable(false);
29 | progressDialog.setCanceledOnTouchOutside(false);
30 | }
31 |
32 | /**
33 | * dismiss进度框
34 | */
35 | protected void progressDialogDismiss() {
36 | if (progressDialog != null) {
37 | progressDialog.dismiss();
38 | }
39 | }
40 |
41 | /**
42 | * show进度框
43 | */
44 | protected void progressDialogShow() {
45 | resetProgressDialog();
46 | progressDialog.show();
47 | }
48 |
49 | @Override
50 | public void setContentView(@LayoutRes int layoutResID) {
51 | super.setContentView(layoutResID);
52 | resetProgressDialog();
53 | initView();
54 | initData();
55 | }
56 |
57 | @Override
58 | protected void onDestroy() {
59 | super.onDestroy();
60 | progressDialogDismiss();
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/app/BaseFragment.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.app;
2 |
3 | import android.app.Fragment;
4 | import android.app.ProgressDialog;
5 | import android.os.Bundle;
6 | import android.support.annotation.Nullable;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 |
11 | import com.jin123d.urp.R;
12 |
13 | /**
14 | * Created by jin123d on 11/19 0019.
15 | **/
16 |
17 | public abstract class BaseFragment extends Fragment {
18 | protected ProgressDialog progressDialog;
19 |
20 | protected abstract View setContentView(LayoutInflater inflater, ViewGroup container);
21 |
22 | protected abstract void initView(View view);
23 |
24 | protected abstract void initData();
25 |
26 | @Override
27 | public void onCreate(Bundle savedInstanceState) {
28 | super.onCreate(savedInstanceState);
29 | resetProgressDialog();
30 | }
31 |
32 | @Nullable
33 | @Override
34 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
35 | return setContentView(inflater, container);
36 | }
37 |
38 | @Override
39 | public void onViewCreated(View view, Bundle savedInstanceState) {
40 | super.onViewCreated(view, savedInstanceState);
41 | initView(view);
42 | initData();
43 | }
44 |
45 | /**
46 | * 重置进度框
47 | */
48 | private void resetProgressDialog() {
49 | if (progressDialog == null) {
50 | progressDialog = new ProgressDialog(getActivity());
51 | }
52 | progressDialog.setMessage(getText(R.string.getData));
53 | progressDialog.setCancelable(false);
54 | progressDialog.setCanceledOnTouchOutside(false);
55 | }
56 |
57 | /**
58 | * dismiss进度框
59 | */
60 | protected void progressDialogDismiss() {
61 | if (progressDialog != null) {
62 | progressDialog.dismiss();
63 | }
64 | }
65 |
66 | /**
67 | * show进度框
68 | */
69 | protected void progressDialogShow() {
70 | resetProgressDialog();
71 | progressDialog.show();
72 | }
73 |
74 | @Override
75 | public void onDestroy() {
76 | super.onDestroy();
77 | progressDialogDismiss();
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/app/UrpApplication.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.app;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 |
6 | import com.jin123d.util.UrpSpUtil;
7 | import com.lzy.okgo.OkGo;
8 |
9 | import java.lang.ref.WeakReference;
10 |
11 | /**
12 | * Created by jin123d on 11/5 0005.
13 | **/
14 |
15 | public class UrpApplication extends Application {
16 | private static WeakReference context;
17 |
18 | public static Context getContext() {
19 | return context.get();
20 | }
21 |
22 | @Override
23 | public void onCreate() {
24 | super.onCreate();
25 | context = new WeakReference<>(getApplicationContext());
26 | //必须调用初始化
27 | OkGo.init(this);
28 | //好处是全局参数统一,特定请求可以特别定制参数
29 | //以下都不是必须的,根据需要自行选择,一般来说只需要 debug,缓存相关,cookie相关的 就可以了
30 | OkGo.getInstance()
31 | //打开该调试开关,控制台会使用 红色error 级别打印log,并不是错误,是为了显眼,不需要就不要加入该行
32 | .debug("OkGo")
33 | //如果使用默认的 60秒,以下三行也不需要传
34 | .setConnectTimeout(10 * 1000) //全局的连接超时时间
35 | .setReadTimeOut(10 * 1000) //全局的读取超时时间
36 | .setWriteTimeOut(10 * 1000); //全局的写入超时时间
37 |
38 | UrpSpUtil.InitSp(getApplicationContext());
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/fragment/CjBjgFragment.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.fragment;
2 |
3 | import android.content.DialogInterface;
4 | import android.support.v7.app.AlertDialog;
5 | import android.view.LayoutInflater;
6 | import android.view.View;
7 | import android.view.ViewGroup;
8 | import android.widget.ListAdapter;
9 | import android.widget.ListView;
10 | import android.widget.TextView;
11 | import android.widget.Toast;
12 |
13 | import com.jin123d.adapter.CjAdapter;
14 | import com.jin123d.app.BaseFragment;
15 | import com.jin123d.models.CjModels;
16 | import com.jin123d.urp.R;
17 | import com.jin123d.util.ErrorCode;
18 | import com.jin123d.util.HttpUtil;
19 | import com.jin123d.util.okgo.JsoupCallBack;
20 |
21 | import org.jsoup.nodes.Document;
22 | import org.jsoup.select.Elements;
23 |
24 | import java.util.ArrayList;
25 | import java.util.List;
26 |
27 | import okhttp3.Response;
28 |
29 | /**
30 | * Created by jin123d on 2015/9/14.
31 | **/
32 | public class CjBjgFragment extends BaseFragment {
33 | private ListView lv_sbjg;
34 | private ListView lv_cbjg;
35 | private CjAdapter adapter;
36 | private CjAdapter adapter2;
37 | private List lists;
38 | private List lists2;
39 | private TextView tv_sbjg, tv_cbjg;
40 | private boolean mHasLoadedOnce = false;
41 |
42 |
43 | @Override
44 | protected void initView(View view) {
45 | lv_sbjg = (ListView) view.findViewById(R.id.lv_sbjg);
46 | lv_cbjg = (ListView) view.findViewById(R.id.lv_cbjg);
47 | tv_cbjg = (TextView) view.findViewById(R.id.tv_cbjg);
48 | tv_sbjg = (TextView) view.findViewById(R.id.tv_sbjg);
49 | }
50 |
51 | @Override
52 | protected void initData() {
53 | progressDialog.setMessage(getString(R.string.getBjg));
54 | progressDialog.show();
55 | lists = new ArrayList<>();
56 | lists2 = new ArrayList<>();
57 | adapter = new CjAdapter(lists, getActivity());
58 | adapter2 = new CjAdapter(lists2, getActivity());
59 | lv_cbjg.setAdapter(adapter);
60 | lv_sbjg.setAdapter(adapter2);
61 | getInfo();
62 | }
63 |
64 | @Override
65 | protected View setContentView(LayoutInflater inflater, ViewGroup container) {
66 | return inflater.inflate(R.layout.fragment_cjbjg, container, false);
67 | }
68 |
69 | void getInfo() {
70 | HttpUtil.getBJgList(this, new JsoupCallBack() {
71 | @Override
72 | public void onSuccess(Document document) {
73 | progressDialogDismiss();
74 | if (getText(R.string.webTitleError).equals(document.title())) {
75 | String ErrorContent = document.body().text();
76 | AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
77 | dialog.setTitle(document.title());
78 | dialog.setMessage(ErrorContent);
79 | dialog.setNegativeButton("确定", new DialogInterface.OnClickListener() {
80 | @Override
81 | public void onClick(DialogInterface dialogInterface, int i) {
82 | getActivity().finish();
83 | }
84 | });
85 | dialog.setCancelable(false);
86 | dialog.create().show();
87 | } else {
88 | Elements es = document.select("[class=titleTop2]");
89 | if (es.size() != 0) {
90 | for (int i = 0; i < es.size(); i++) {
91 | Elements es_2 = es.get(i).select("tr").select("td").select("table").get(0).select("tr");
92 | for (int j = 0; j < es_2.size(); j++) {
93 | Elements es_3 = es_2.get(j).select("td");
94 | if (es_3.size() > 0) {
95 | String ckm = es_3.get(2).text();
96 | String xf = es_3.get(4).text();
97 | String cj = es_3.get(6).text();
98 | CjModels cjModels = new CjModels(ckm, xf, cj);
99 | if (i == 0) {
100 | lists.add(cjModels);
101 | adapter.notifyDataSetChanged();
102 | } else {
103 | lists2.add(cjModels);
104 | adapter2.notifyDataSetChanged();
105 | }
106 | }
107 | }
108 | }
109 | setListViewHeight(lv_cbjg);
110 | setListViewHeight(lv_sbjg);
111 | Elements es_count = document.select("[height=21]");
112 | tv_sbjg.setText(es_count.get(0).text());
113 | tv_cbjg.setText(es_count.get(1).text());
114 | } else {
115 | Toast.makeText(getActivity(), getString(R.string.error), Toast.LENGTH_SHORT).show();
116 | getActivity().finish();
117 | }
118 | }
119 | }
120 |
121 | @Override
122 | public void onError(ErrorCode errorCode, Response response) {
123 | super.onError(errorCode, response);
124 | progressDialogDismiss();
125 | }
126 | });
127 | }
128 |
129 | /**
130 | * 设置listView高度,注意listView子项必须为LinearLayout才能调用该方法
131 | *
132 | * @param listView listView
133 | */
134 | public static void setListViewHeight(ListView listView) {
135 | int totalHeight = 0;
136 | ListAdapter adapter = listView.getAdapter();
137 | if (null != adapter) {
138 | for (int i = 0; i < adapter.getCount(); i++) {
139 | View listItem = adapter.getView(i, null, listView);
140 | if (null != listItem) {
141 | listItem.measure(0, 0);//注意listview子项必须为LinearLayout才能调用该方法
142 | totalHeight += listItem.getMeasuredHeight();
143 | }
144 | }
145 | ViewGroup.LayoutParams params = listView.getLayoutParams();
146 | params.height = totalHeight + (listView.getDividerHeight() * (listView.getCount() - 1));
147 | listView.setLayoutParams(params);
148 | }
149 | }
150 |
151 |
152 | @Override
153 | public void setUserVisibleHint(boolean isVisibleToUser) {
154 | if (this.isVisible()) {
155 | // we check that the fragment is becoming visible
156 | if (isVisibleToUser && !mHasLoadedOnce && lists == null) {
157 | // async http request here
158 | mHasLoadedOnce = true;
159 | }
160 | }
161 | super.setUserVisibleHint(isVisibleToUser);
162 | }
163 | }
164 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/fragment/CjJgFragment.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.fragment;
2 |
3 | import android.view.LayoutInflater;
4 | import android.view.View;
5 | import android.view.ViewGroup;
6 | import android.widget.ListView;
7 |
8 | import com.jin123d.adapter.CjAdapter;
9 | import com.jin123d.app.BaseFragment;
10 | import com.jin123d.models.CjModels;
11 | import com.jin123d.urp.R;
12 | import com.jin123d.util.ErrorCode;
13 | import com.jin123d.util.HttpUtil;
14 | import com.jin123d.util.JsoupUtil;
15 | import com.jin123d.util.okgo.JsoupCallBack;
16 |
17 | import org.jsoup.nodes.Document;
18 |
19 | import java.util.ArrayList;
20 | import java.util.List;
21 |
22 | import okhttp3.Response;
23 |
24 | /**
25 | * Created by jin123d on 2015/9/14.
26 | **/
27 | public class CjJgFragment extends BaseFragment {
28 | private CjAdapter adapter;
29 | private List lists;
30 |
31 | @Override
32 | protected View setContentView(LayoutInflater inflater, ViewGroup container) {
33 | return inflater.inflate(R.layout.fragment_cjjg, container, false);
34 | }
35 |
36 |
37 | @Override
38 | protected void initView(View view) {
39 | ListView lv_zjsj = (ListView) view.findViewById(R.id.lv_zjsj);
40 | progressDialog.setMessage(getString(R.string.getJg));
41 | progressDialog.show();
42 | lists = new ArrayList<>();
43 | adapter = new CjAdapter(lists, getActivity());
44 | lv_zjsj.setAdapter(adapter);
45 | }
46 |
47 | @Override
48 | protected void initData() {
49 | getInfo();
50 | }
51 |
52 |
53 | void getInfo() {
54 | HttpUtil.getAllCjList(this, new JsoupCallBack() {
55 | @Override
56 | public void onSuccess(Document document) {
57 | progressDialogDismiss();
58 | lists.clear();
59 | lists.addAll(JsoupUtil.getAllCj(document));
60 | adapter.notifyDataSetChanged();
61 | }
62 |
63 | @Override
64 | public void onError(ErrorCode errorCode, Response response) {
65 | super.onError(errorCode, response);
66 | progressDialogDismiss();
67 | }
68 | });
69 | }
70 |
71 | }
72 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/models/CjModels.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.models;
2 |
3 | /**
4 | * Created by jin123d on 2015/9/14.
5 | */
6 | public class CjModels {
7 | private String kcm;
8 | private String xf;
9 | private String cj;
10 |
11 | public String getKcm() {
12 | return kcm;
13 | }
14 |
15 | public void setKcm(String kcm) {
16 | this.kcm = kcm;
17 | }
18 |
19 | public String getXf() {
20 | return xf;
21 | }
22 |
23 | public void setXf(String xf) {
24 | this.xf = xf;
25 | }
26 |
27 | public String getCj() {
28 | return cj;
29 | }
30 |
31 | public void setCj(String cj) {
32 | this.cj = cj;
33 | }
34 |
35 | public CjModels(String kcm, String xf, String cj) {
36 | this.kcm = kcm;
37 | this.xf = xf;
38 | this.cj = cj;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/models/JxpgModels.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.models;
2 |
3 | /**
4 | * Created by jin123d on 2015/11/7.
5 | */
6 | public class JxpgModels {
7 | private String wjmc; //问卷名称
8 | private String bprm; //被评人名
9 | private String pgnr; //评估内容
10 | private String sfpg; //是否评估
11 |
12 |
13 | public String getWjmc() {
14 | return wjmc;
15 | }
16 |
17 | public void setWjmc(String wjmc) {
18 | this.wjmc = wjmc;
19 | }
20 |
21 | public String getBprm() {
22 | return bprm;
23 | }
24 |
25 | public void setBprm(String bprm) {
26 | this.bprm = bprm;
27 | }
28 |
29 | public String getPgnr() {
30 | return pgnr;
31 | }
32 |
33 | public void setPgnr(String pgnr) {
34 | this.pgnr = pgnr;
35 | }
36 |
37 | public String getSfpg() {
38 | return sfpg;
39 | }
40 |
41 | public void setSfpg(String sfpg) {
42 | this.sfpg = sfpg;
43 | }
44 |
45 |
46 | /**
47 | * @param wjmc 问卷名称
48 | * @param pgnr 评估内容 这里为课程名
49 | * @param bprm 被评人名
50 | * @param sfpg 是否评价
51 | */
52 | public JxpgModels(String wjmc, String pgnr, String bprm, String sfpg) {
53 | this.pgnr = pgnr;
54 | this.wjmc = wjmc;
55 | this.bprm = bprm;
56 | this.sfpg = sfpg;
57 | }
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/models/KbModels.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.models;
2 |
3 | /**
4 | * Created by jin123d on 2015/9/22.
5 | **/
6 | public class KbModels {
7 | }
8 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/models/MainModels.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.models;
2 |
3 | /**
4 | * Created by jin123d on 2015/9/20.
5 | **/
6 | public class MainModels {
7 | private int imgId;
8 | private String name;
9 |
10 | public int getImgId() {
11 | return imgId;
12 | }
13 |
14 | public void setImgId(int imgId) {
15 | this.imgId = imgId;
16 | }
17 |
18 | public String getName() {
19 | return name;
20 | }
21 |
22 | public void setName(String name) {
23 | this.name = name;
24 | }
25 |
26 | public MainModels(int imgId, String name) {
27 | this.imgId = imgId;
28 | this.name = name;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/models/PgInfoModels.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.models;
2 |
3 | /**
4 | * Created by jin123d on 2015/11/7.
5 | **/
6 | public class PgInfoModels {
7 | private String wjbm; //问卷编码 wjbm 0000000083
8 | private String bpr; //被评人 bpr 104226
9 | private String kcm; //课程名
10 | private String pgnr;
11 |
12 | public String getWjbm() {
13 | return wjbm;
14 | }
15 |
16 | public void setWjbm(String wjbm) {
17 | this.wjbm = wjbm;
18 | }
19 |
20 | public String getBpr() {
21 | return bpr;
22 | }
23 |
24 | public void setBpr(String bpr) {
25 | this.bpr = bpr;
26 | }
27 |
28 | public String getKcm() {
29 | return kcm;
30 | }
31 |
32 | public void setKcm(String kcm) {
33 | this.kcm = kcm;
34 | }
35 |
36 | public String getPgnr() {
37 | return pgnr;
38 | }
39 |
40 | public void setPgnr(String pgnr) {
41 | this.pgnr = pgnr;
42 | }
43 |
44 | public PgInfoModels(String wjbm, String bpr, String kcm, String pgnr) {
45 | this.wjbm = wjbm;
46 | this.bpr = bpr;
47 | this.kcm = kcm;
48 | this.pgnr = pgnr;
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/models/TzggModels.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.models;
2 |
3 | /**
4 | * Created by jin123d on 2015/9/22.
5 | */
6 | public class TzggModels {
7 | private String title;
8 | private String url;
9 |
10 | public String getTitle() {
11 | return title;
12 | }
13 |
14 | public void setTitle(String title) {
15 | this.title = title;
16 | }
17 |
18 | public String getUrl() {
19 | return url;
20 | }
21 |
22 | public void setUrl(String url) {
23 | this.url = url;
24 | }
25 |
26 | public TzggModels(String title, String url) {
27 | this.title = title;
28 | this.url = url;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/models/ZjsjModels.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.models;
2 |
3 | /**
4 | * Created by jin123d on 2015/9/14.
5 | **/
6 | public class ZjsjModels {
7 |
8 | private String xh;
9 | private String xm;
10 | private String mc;
11 | private String bz;
12 | private String xf;
13 |
14 | public String getBz() {
15 | return bz;
16 | }
17 |
18 | public void setBz(String bz) {
19 | this.bz = bz;
20 | }
21 |
22 | public String getXh() {
23 | return xh;
24 | }
25 |
26 | public void setXh(String xh) {
27 | this.xh = xh;
28 | }
29 |
30 | public String getXm() {
31 | return xm;
32 | }
33 |
34 | public void setXm(String xm) {
35 | this.xm = xm;
36 | }
37 |
38 | public String getMc() {
39 | return mc;
40 | }
41 |
42 | public void setMc(String mc) {
43 | this.mc = mc;
44 | }
45 |
46 | public String getXf() {
47 | return xf;
48 | }
49 |
50 | public void setXf(String xf) {
51 | this.xf = xf;
52 | }
53 |
54 | public ZjsjModels(String xh, String xm, String mc, String bz, String xf) {
55 | this.xh = xh;
56 | this.xm = xm;
57 | this.mc = mc;
58 | this.bz = bz;
59 | this.xf = xf;
60 | }
61 |
62 | public ZjsjModels(String mc, String bz, String xf) {
63 | this.mc = mc;
64 | this.bz = bz;
65 | this.xf = xf;
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/urp/AboutActivity.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.content.pm.PackageInfo;
4 | import android.content.pm.PackageManager;
5 | import android.os.Bundle;
6 | import android.text.TextUtils;
7 | import android.widget.TextView;
8 |
9 | import com.jin123d.app.BaseActivity;
10 |
11 | public class AboutActivity extends BaseActivity {
12 |
13 | @Override
14 | protected void onCreate(Bundle savedInstanceState) {
15 | super.onCreate(savedInstanceState);
16 | setContentView(R.layout.activity_about);
17 |
18 | }
19 |
20 |
21 | private String getVersionName() throws Exception {
22 | PackageManager packageManager = getPackageManager();
23 | PackageInfo packInfo = packageManager.getPackageInfo(getPackageName(), 0);
24 | return packInfo.versionName;
25 | }
26 |
27 |
28 | @Override
29 | protected void initView() {
30 | TextView tv_versionName = (TextView) findViewById(R.id.tv_verName);
31 | try {
32 | tv_versionName.setText(TextUtils.concat("V", getVersionName()));
33 | } catch (Exception e) {
34 | e.printStackTrace();
35 | }
36 | }
37 |
38 | @Override
39 | protected void initData() {
40 |
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/urp/ChangeColorActivity.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.os.Bundle;
4 | import android.widget.Button;
5 |
6 | import com.jin123d.app.BaseActivity;
7 |
8 |
9 | public class ChangeColorActivity extends BaseActivity {
10 |
11 | Button btn_blue, btn_red;
12 |
13 | @Override
14 | public void onCreate(Bundle savedInstanceState) {
15 | super.onCreate(savedInstanceState);
16 | setContentView(R.layout.activity_change_color);
17 |
18 | }
19 |
20 | @Override
21 | protected void initView() {
22 | btn_blue = (Button) findViewById(R.id.btn_blue);
23 | btn_red = (Button) findViewById(R.id.btn_red);
24 | }
25 |
26 | @Override
27 | protected void initData() {
28 |
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/urp/CjActivity.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.app.Fragment;
4 | import android.app.FragmentManager;
5 | import android.os.Bundle;
6 | import android.support.design.widget.TabLayout;
7 | import android.support.v13.app.FragmentPagerAdapter;
8 | import android.support.v4.view.ViewPager;
9 | import android.support.v7.widget.Toolbar;
10 | import android.view.View;
11 |
12 | import com.jin123d.app.BaseActivity;
13 | import com.jin123d.fragment.CjBjgFragment;
14 | import com.jin123d.fragment.CjJgFragment;
15 |
16 |
17 | public class CjActivity extends BaseActivity {
18 |
19 | private CjJgFragment jgFragment;
20 | private CjBjgFragment bjgFragment;
21 |
22 | @Override
23 | protected void onCreate(Bundle savedInstanceState) {
24 | super.onCreate(savedInstanceState);
25 | setContentView(R.layout.activity_cj);
26 | }
27 |
28 | @Override
29 | protected void initView() {
30 | Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
31 | setSupportActionBar(toolbar);
32 | toolbar.setNavigationOnClickListener(new View.OnClickListener() {
33 | @Override
34 | public void onClick(View v) {
35 | finish();
36 | }
37 | });
38 | TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
39 | ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
40 | viewPager.setAdapter(new MyPagerAdapter(getFragmentManager()));
41 | tabLayout.setupWithViewPager(viewPager);
42 | }
43 |
44 | @Override
45 | protected void initData() {
46 |
47 | }
48 |
49 |
50 | public class MyPagerAdapter extends FragmentPagerAdapter {
51 |
52 | private MyPagerAdapter(FragmentManager fm) {
53 | super(fm);
54 | }
55 |
56 | private final String[] titles = {"及格成绩", "不及格成绩"};
57 |
58 | @Override
59 | public CharSequence getPageTitle(int position) {
60 | return titles[position];
61 | }
62 |
63 | @Override
64 | public int getCount() {
65 | return titles.length;
66 | }
67 |
68 | @Override
69 | public Fragment getItem(int position) {
70 | switch (position) {
71 | case 0:
72 | if (jgFragment == null) {
73 | jgFragment = new CjJgFragment();
74 | }
75 | return jgFragment;
76 |
77 | case 1:
78 | if (bjgFragment == null) {
79 | bjgFragment = new CjBjgFragment();
80 | }
81 | return bjgFragment;
82 | default:
83 | return null;
84 | }
85 | }
86 | }
87 |
88 | }
89 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/urp/JxpgListActivity.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.content.DialogInterface;
4 | import android.os.Bundle;
5 | import android.support.design.widget.FloatingActionButton;
6 | import android.support.v7.app.AlertDialog;
7 | import android.util.Log;
8 | import android.view.View;
9 | import android.widget.AdapterView;
10 | import android.widget.ListView;
11 |
12 | import com.jin123d.adapter.JxpgAdapter;
13 | import com.jin123d.app.BaseActivity;
14 | import com.jin123d.models.JxpgModels;
15 | import com.jin123d.models.PgInfoModels;
16 | import com.jin123d.util.ErrorCode;
17 | import com.jin123d.util.HttpUtil;
18 | import com.jin123d.util.okgo.JsoupCallBack;
19 |
20 | import org.jsoup.nodes.Document;
21 | import org.jsoup.select.Elements;
22 |
23 | import java.util.ArrayList;
24 | import java.util.List;
25 |
26 | import okhttp3.Response;
27 |
28 |
29 | public class JxpgListActivity extends BaseActivity {
30 | private List lists;
31 | private JxpgAdapter adapter;
32 | private List list_pg;
33 | private AlertDialog.Builder dialog;
34 | private int i = 0;
35 |
36 |
37 | @Override
38 | protected void onCreate(Bundle savedInstanceState) {
39 | super.onCreate(savedInstanceState);
40 | setContentView(R.layout.activity_jxpg_list);
41 | getInfo();
42 | }
43 |
44 | @Override
45 | protected void initView() {
46 | ListView lv_jxpg = (ListView) findViewById(R.id.lv_jxpg_list);
47 | FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab_car);
48 | dialog = new AlertDialog.Builder(this);
49 | dialog.setTitle(getString(R.string.title_activity_jxpg_list));
50 | dialog.setMessage("是否进行一键评教,可能会耗时几分钟,请耐心等待");
51 | lists = new ArrayList<>();
52 | list_pg = new ArrayList<>();
53 | adapter = new JxpgAdapter(JxpgListActivity.this, lists);
54 | lv_jxpg.setAdapter(adapter);
55 |
56 | lv_jxpg.setOnItemClickListener(new AdapterView.OnItemClickListener() {
57 | @Override
58 | public void onItemClick(AdapterView> parent, View view, int position, long id) {
59 | new AlertDialog.Builder(JxpgListActivity.this).setTitle(R.string.app_name)
60 | .setMessage(lists.get(position).getBprm() + "" +
61 | "\n" + lists.get(position).getPgnr()).setNegativeButton("OK", null)
62 | .create().show();
63 | }
64 | });
65 | fab.setOnClickListener(new View.OnClickListener() {
66 | @Override
67 | public void onClick(View v) {
68 | if (list_pg.size() == 0) {
69 | dialog.setTitle(getString(R.string.title_activity_jxpg_list));
70 | dialog.setMessage("当前没有需要评教的科目");
71 | dialog.setNegativeButton("OK", new DialogInterface.OnClickListener() {
72 | @Override
73 | public void onClick(DialogInterface dialog, int which) {
74 | dialog.dismiss();
75 | }
76 | });
77 | dialog.show();
78 | } else {
79 | dialog.setNegativeButton("开始评教", new DialogInterface.OnClickListener() {
80 | @Override
81 | public void onClick(DialogInterface dialog, int which) {
82 | dialog.dismiss();
83 | progressDialog.setTitle("正在评教");
84 | progressDialog.show();
85 | startPg(i);
86 | }
87 | });
88 | dialog.show();
89 | }
90 |
91 | }
92 | });
93 | }
94 |
95 | @Override
96 | protected void initData() {
97 |
98 | }
99 |
100 | public void getInfo() {
101 | HttpUtil.getJxpgList(this, new JsoupCallBack() {
102 | @Override
103 | public void onError(ErrorCode errorCode, Response response) {
104 | super.onError(errorCode, response);
105 | progressDialogDismiss();
106 | }
107 |
108 | @Override
109 | public void onSuccess(Document document) {
110 | progressDialogDismiss();
111 | //教学评估列表
112 | Elements es = document.select("[class=odd]");
113 | if (es.size() != 0) {
114 | for (int i = 0; i < es.size(); i++) {
115 | Elements es_2 = es.get(i).select("td");
116 | String wjmc = es_2.get(0).text();
117 | String pgnr = es_2.get(2).text();
118 | String bpr = es_2.get(1).text();
119 | String sfpg = es_2.get(3).text();
120 | if ("否".equals(sfpg)) {
121 | String pginfo = es_2.get(4).select("img").attr("name");
122 | String[] strs = pginfo.split("#@");
123 | String info_wjbm = strs[0];
124 | String info_bpr = strs[1];
125 | String info_kcm = strs[4];
126 | String info_pgnr = strs[5];
127 | PgInfoModels pgInfoModels = new PgInfoModels(info_wjbm, info_bpr, info_kcm, info_pgnr);
128 | list_pg.add(pgInfoModels);
129 | Log.d("评估", info_kcm);
130 | }
131 | JxpgModels jxpgModels = new JxpgModels(wjmc, pgnr, bpr, sfpg);
132 | lists.add(jxpgModels);
133 | adapter.notifyDataSetChanged();
134 | }
135 | }
136 | }
137 | });
138 |
139 | }
140 |
141 |
142 | private void startPg(final int position) {
143 | final int size = list_pg.size();
144 | if (size == 0) {
145 | progressDialogDismiss();
146 | dialog.setMessage("所有科目都评教完成!");
147 | dialog.setNegativeButton("OK", new DialogInterface.OnClickListener() {
148 | @Override
149 | public void onClick(DialogInterface dialog, int which) {
150 | i = 0;
151 | }
152 | });
153 | dialog.setCancelable(false);
154 | dialog.show();
155 | return;
156 | }
157 | if (position == size) {
158 | lists.clear();
159 | list_pg.clear();
160 | adapter.notifyDataSetChanged();
161 | getInfo();
162 | progressDialogDismiss();
163 | dialog.setMessage("所有科目都评教完成!");
164 | dialog.setNegativeButton("OK", new DialogInterface.OnClickListener() {
165 | @Override
166 | public void onClick(DialogInterface dialog, int which) {
167 | i = 0;
168 | }
169 | });
170 | dialog.setCancelable(false);
171 | dialog.show();
172 | } else {
173 | progressDialog.setMessage("正在评教" + i + "/" + size + "\n" + list_pg.get(position).getKcm());
174 | HttpUtil.pg_1(this, list_pg.get(position), true, new JsoupCallBack() {
175 | @Override
176 | public void onSuccess(Document document) {
177 | progressDialog.setMessage(document.text());
178 | i++;
179 | startPg(i);
180 | }
181 | });
182 | }
183 | }
184 |
185 |
186 | }
187 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/urp/KbActivity.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.os.Bundle;
4 | import android.support.v7.app.AppCompatActivity;
5 |
6 |
7 | public class KbActivity extends AppCompatActivity {
8 |
9 | @Override
10 | protected void onCreate(Bundle savedInstanceState) {
11 | super.onCreate(savedInstanceState);
12 | setContentView(R.layout.activity_kb);
13 | initView();
14 | }
15 |
16 | private void initView() {
17 |
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/urp/Loading.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.os.Bundle;
4 | import android.support.v7.app.ActionBarActivity;
5 |
6 | public class Loading extends ActionBarActivity {
7 |
8 | @Override
9 | protected void onCreate(Bundle savedInstanceState) {
10 | super.onCreate(savedInstanceState);
11 | setContentView(R.layout.activity_loading);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/urp/LoginActivity.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.content.Intent;
4 | import android.graphics.Bitmap;
5 | import android.os.Bundle;
6 | import android.support.design.widget.Snackbar;
7 | import android.text.TextUtils;
8 | import android.view.View;
9 | import android.widget.Button;
10 | import android.widget.CheckBox;
11 | import android.widget.CompoundButton;
12 | import android.widget.EditText;
13 | import android.widget.ImageView;
14 | import android.widget.LinearLayout;
15 | import android.widget.ProgressBar;
16 |
17 | import com.jin123d.Interface.GetCodeListener;
18 | import com.jin123d.Interface.UrpUserListener;
19 | import com.jin123d.app.BaseActivity;
20 | import com.jin123d.util.ErrorCode;
21 | import com.jin123d.util.HttpUtil;
22 | import com.jin123d.util.JsoupUtil;
23 | import com.jin123d.util.UrpSpUtil;
24 | import com.jin123d.util.okgo.JsoupCallBack;
25 |
26 | import org.jsoup.nodes.Document;
27 |
28 | import okhttp3.Call;
29 | import okhttp3.Response;
30 |
31 |
32 | public class LoginActivity extends BaseActivity implements View.OnClickListener {
33 | private EditText et_user, et_pwd, et_yzm;
34 | private ImageView img_yzm;
35 | private ProgressBar pgb_yzm;
36 | private String zjh;
37 | private String mm;
38 | private CheckBox chb_mm;
39 | private CheckBox chk_auto;
40 | private LinearLayout lin_main;
41 |
42 |
43 | @Override
44 | protected void onCreate(Bundle savedInstanceState) {
45 | super.onCreate(savedInstanceState);
46 | setContentView(R.layout.activity_login);
47 | }
48 |
49 | @Override
50 | protected void initView() {
51 | chb_mm = (CheckBox) findViewById(R.id.chk_mm);
52 | chk_auto = (CheckBox) findViewById(R.id.chk_auto);
53 | et_user = (EditText) findViewById(R.id.et_user);
54 | et_pwd = (EditText) findViewById(R.id.et_pwd);
55 | et_yzm = (EditText) findViewById(R.id.et_yzm);
56 | pgb_yzm = (ProgressBar) findViewById(R.id.pgb_yzm);
57 | Button btn_login = (Button) findViewById(R.id.btn_login);
58 | img_yzm = (ImageView) findViewById(R.id.img_yzm);
59 | lin_main = (LinearLayout) findViewById(R.id.lin_main);
60 | pgb_yzm.setVisibility(View.GONE);
61 | btn_login.setOnClickListener(this);
62 | img_yzm.setOnClickListener(this);
63 | chk_auto.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
64 | @Override
65 | public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
66 | if (isChecked) {
67 | chb_mm.setChecked(true);
68 | }
69 | }
70 | });
71 | //记住密码是否开启
72 | if (UrpSpUtil.getRememberMM()) {
73 | et_user.setText(UrpSpUtil.getZjh());
74 | et_pwd.setText(UrpSpUtil.getMm());
75 | chb_mm.setChecked(true);
76 | }
77 |
78 | }
79 |
80 | @Override
81 | protected void initData() {
82 | if (UrpSpUtil.getAuto()) {
83 | Intent intent = new Intent();
84 | intent.setClass(getApplicationContext(), MainActivity.class);
85 | startActivity(intent);
86 | finish();
87 | } else {
88 | getCode();
89 | }
90 | }
91 |
92 |
93 | @Override
94 | public void onClick(View v) {
95 | switch (v.getId()) {
96 | case R.id.img_yzm:
97 | getCode();
98 | break;
99 | case R.id.btn_login:
100 | if (TextUtils.isEmpty(et_yzm.getText().toString())) {
101 | Snackbar.make(lin_main, R.string.codeIsNull, Snackbar.LENGTH_SHORT)
102 | .show();
103 | } else {
104 | progressDialog.setMessage(getString(R.string.logining));
105 | progressDialog.show();
106 | login();
107 | }
108 | break;
109 | }
110 | }
111 |
112 | private void getCode() {
113 | pgb_yzm.setVisibility(View.VISIBLE);
114 | et_yzm.setFocusable(true);
115 | et_yzm.setText(null);
116 | HttpUtil.getCode(this, new GetCodeListener() {
117 | @Override
118 | public void getSuccess(Bitmap bitmap) {
119 | img_yzm.setImageBitmap(bitmap);
120 | pgb_yzm.setVisibility(View.INVISIBLE);
121 | }
122 |
123 | @Override
124 | public void getError(String errorMsg) {
125 | Snackbar.make(lin_main, R.string.getYzmFail, Snackbar.LENGTH_SHORT).show();
126 | pgb_yzm.setVisibility(View.INVISIBLE);
127 | }
128 | });
129 | }
130 |
131 | private void login() {
132 | zjh = et_user.getText().toString();
133 | mm = et_pwd.getText().toString();
134 | HttpUtil.login(this, zjh, mm, et_yzm.getText().toString(), new JsoupCallBack() {
135 |
136 | @Override
137 | public void onSuccess(Document document, Call call, Response response) {
138 | progressDialogDismiss();
139 | JsoupUtil.isLogin(document, new UrpUserListener.UserStateListener() {
140 | @Override
141 | public void loginSuccess() {
142 | if (chb_mm.isChecked()) {
143 | UrpSpUtil.setZjh(zjh);
144 | UrpSpUtil.setMm(mm);
145 | UrpSpUtil.setRememberMm(true);
146 | } else {
147 | UrpSpUtil.setZjh(null);
148 | UrpSpUtil.setMm(null);
149 | }
150 | if (chk_auto.isChecked()) {
151 | UrpSpUtil.setAuto(true);
152 | }
153 | // UrpSp.setCookie(cookie);
154 | startActivity(new Intent(LoginActivity.this, MainActivity.class));
155 | finish();
156 | }
157 |
158 | @Override
159 | public void loginFailed(String errorMsg) {
160 | progressDialogDismiss();
161 | Snackbar.make(lin_main, errorMsg, Snackbar.LENGTH_SHORT).show();
162 | getCode();
163 | }
164 | });
165 | }
166 |
167 | @Override
168 | protected void onSuccess(Document document) {
169 | //登录时无用
170 | }
171 |
172 | @Override
173 | public void onError(ErrorCode errorCode, Response response) {
174 | super.onError(errorCode, response);
175 | progressDialogDismiss();
176 | }
177 | });
178 |
179 | }
180 |
181 | }
182 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/urp/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.content.DialogInterface;
4 | import android.content.Intent;
5 | import android.content.res.Configuration;
6 | import android.os.Bundle;
7 | import android.support.design.widget.NavigationView;
8 | import android.support.design.widget.Snackbar;
9 | import android.support.v4.view.GravityCompat;
10 | import android.support.v4.widget.DrawerLayout;
11 | import android.support.v7.app.ActionBarDrawerToggle;
12 | import android.support.v7.app.AlertDialog;
13 | import android.support.v7.widget.Toolbar;
14 | import android.text.TextUtils;
15 | import android.view.KeyEvent;
16 | import android.view.Menu;
17 | import android.view.MenuItem;
18 | import android.view.View;
19 | import android.widget.AdapterView;
20 | import android.widget.ListView;
21 | import android.widget.TextView;
22 | import android.widget.Toast;
23 |
24 | import com.jin123d.adapter.MainAdapter;
25 | import com.jin123d.app.BaseActivity;
26 | import com.jin123d.models.MainModels;
27 | import com.jin123d.util.ErrorCode;
28 | import com.jin123d.util.HttpUtil;
29 | import com.jin123d.util.UrpSpUtil;
30 | import com.jin123d.util.okgo.JsoupCallBack;
31 |
32 | import org.jsoup.nodes.Document;
33 | import org.jsoup.select.Elements;
34 |
35 | import java.util.ArrayList;
36 | import java.util.Collections;
37 | import java.util.List;
38 |
39 | import okhttp3.Response;
40 |
41 | public class MainActivity extends BaseActivity {
42 | private ListView listView;
43 | private DrawerLayout drawerLayout;
44 | private ActionBarDrawerToggle drawerToggle;
45 | private NavigationView navigationView;
46 | private TextView tv_head;
47 |
48 | @Override
49 | protected void onCreate(Bundle savedInstanceState) {
50 | super.onCreate(savedInstanceState);
51 | setContentView(R.layout.activity_main);
52 | getInfo();
53 | }
54 |
55 | @Override
56 | protected void initView() {
57 | progressDialog.setMessage(getString(R.string.getUserData));
58 | progressDialog.show();
59 | /**
60 | * 初始化各种控件
61 | * */
62 | Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
63 | drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
64 | navigationView = (NavigationView) findViewById(R.id.navigation);
65 | drawerToggle = new ActionBarDrawerToggle(MainActivity.this, drawerLayout, R.string.hello_world, R.string.hello_world);
66 | setSupportActionBar(toolbar);
67 | //getSupportActionBar().setHomeButtonEnabled(true); //设置返回键可用
68 | getSupportActionBar().setDisplayHomeAsUpEnabled(true);
69 | drawerToggle.syncState();
70 | drawerLayout.setDrawerListener(drawerToggle);
71 | listView = (ListView) findViewById(R.id.lv_main);
72 | if (navigationView != null) {
73 | tv_head = (TextView) navigationView.getHeaderView(0).findViewById(R.id.tv_head);
74 | }
75 |
76 |
77 | }
78 |
79 | @Override
80 | protected void initData() {
81 | MainModels[] mainModels = new MainModels[7];
82 | mainModels[0] = new MainModels(R.mipmap.xjxx_2, getString(R.string.title_activity_xjxx));
83 | mainModels[1] = new MainModels(R.mipmap.cj_2, getString(R.string.cj));
84 | mainModels[2] = new MainModels(R.mipmap.zzsj_2, getString(R.string.title_activity_zjsj));
85 | mainModels[3] = new MainModels(R.mipmap.xfjd_2, getString(R.string.title_activity_xfjd));
86 | mainModels[4] = new MainModels(R.mipmap.kb_2, getString(R.string.bxqkb));
87 | mainModels[5] = new MainModels(R.mipmap.pj_2, getString(R.string.yjpj));
88 | mainModels[6] = new MainModels(R.mipmap.tzgg_2, getString(R.string.tzgg));
89 | List lists = new ArrayList<>();
90 | Collections.addAll(lists, mainModels);
91 |
92 | MainAdapter adapter = new MainAdapter(lists, MainActivity.this);
93 | listView.setAdapter(adapter);
94 |
95 | listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
96 | @Override
97 | public void onItemClick(AdapterView> parent, View view, int position, long id) {
98 | switch (position) {
99 | case 0:
100 | //学籍信息
101 | start(XjxxActivity.class);
102 | break;
103 | case 1:
104 | //成绩查询
105 | start(CjActivity.class);
106 | break;
107 | case 2:
108 | //自主实践
109 | start(ZjsjActivity.class);
110 | break;
111 | case 3:
112 | //学分绩点
113 | start(XfjdActivity.class);
114 | break;
115 | case 4:
116 | //本学期课表
117 | Snackbar.make(listView, "开发中", Snackbar.LENGTH_SHORT).show();
118 | break;
119 | case 5:
120 | //一键评教
121 | start(JxpgListActivity.class);
122 | break;
123 | case 6:
124 | start(TzggActivity.class);
125 | break;
126 | }
127 | }
128 | });
129 | navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
130 | @Override
131 | public boolean onNavigationItemSelected(MenuItem menuItem) {
132 | switch (menuItem.getItemId()) {
133 | case R.id.navItem1:
134 | Snackbar.make(listView, "开发中", Snackbar.LENGTH_SHORT).show();
135 | break;
136 | case R.id.navItem2:
137 | // start(ChangeColor.class);
138 | Snackbar.make(listView, "开发中", Snackbar.LENGTH_SHORT).show();
139 | break;
140 | case R.id.navItem3:
141 | start(AboutActivity.class);
142 | break;
143 | case R.id.navItem4:
144 | //退出
145 | new AlertDialog.Builder(MainActivity.this)
146 | .setTitle(R.string.app_name).setMessage("退出登录").setNegativeButton(getString(R.string.back), new DialogInterface.OnClickListener() {
147 | @Override
148 | public void onClick(DialogInterface dialog, int which) {
149 | UrpSpUtil.setCookie("");
150 | UrpSpUtil.setAuto(false);
151 | finish();
152 | start(LoginActivity.class);
153 | }
154 | }).create().show();
155 | break;
156 | }
157 | return false;
158 | }
159 | });
160 | }
161 |
162 |
163 | /**
164 | * 获取个人信息/姓名
165 | */
166 | public void getInfo() {
167 | HttpUtil.getXjxx(this, new JsoupCallBack() {
168 | @Override
169 | public void onSuccess(Document document) {
170 | progressDialogDismiss();
171 | Elements es = document.select("[width=275]");
172 | if (es.size() > 0) {
173 | tv_head.setText(TextUtils.concat(es.get(1).text(), " ", es.get(0).text()));
174 | } else {
175 | Toast.makeText(MainActivity.this, getString(R.string.loginFail), Toast.LENGTH_SHORT).show();
176 | reLogin();
177 | }
178 | }
179 |
180 | @Override
181 | public void onError(ErrorCode errorCode, Response response) {
182 | super.onError(errorCode, response);
183 | progressDialogDismiss();
184 | }
185 | });
186 | }
187 |
188 | /**
189 | * 重新登录
190 | */
191 | private void reLogin() {
192 | UrpSpUtil.setAuto(false);
193 | start(LoginActivity.class);
194 | finish();
195 | }
196 |
197 |
198 | void start(Class cls) {
199 | Intent intent = new Intent();
200 | intent.setClass(MainActivity.this, cls);
201 | startActivity(intent);
202 | }
203 |
204 | private long exitTime = 0;
205 |
206 | public boolean onKeyDown(int keyCode, KeyEvent event) {
207 | DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawerLayout);
208 | if (drawer.isDrawerOpen(GravityCompat.START)) {
209 | drawer.closeDrawer(GravityCompat.START);
210 | return true;
211 | } else {
212 | if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
213 | if ((System.currentTimeMillis() - exitTime) > 2000) {
214 | Snackbar.make(listView, R.string.doubleBack, Snackbar.LENGTH_SHORT).show();
215 | exitTime = System.currentTimeMillis();
216 | } else {
217 | finish();
218 | System.exit(0);
219 | }
220 | return true;
221 | }
222 | }
223 | return super.onKeyDown(keyCode, event);
224 | }
225 |
226 |
227 | @Override
228 | public boolean onCreateOptionsMenu(Menu menu) {
229 | // Inflate the menu; this adds items to the action bar if it is present.
230 | getMenuInflater().inflate(R.menu.menu_main, menu);
231 | return true;
232 | }
233 |
234 | public boolean onOptionsItemSelected(MenuItem item) {
235 | switch (item.getItemId()) {
236 | case android.R.id.home:
237 | if (drawerLayout.isDrawerOpen(GravityCompat.START)
238 | ) {
239 | drawerLayout.closeDrawers();
240 | } else {
241 | drawerLayout.openDrawer(GravityCompat.START);
242 | }
243 | break;
244 | }
245 |
246 | return true;
247 | }
248 |
249 |
250 | @Override
251 | public void onConfigurationChanged(Configuration newConfig) {
252 | super.onConfigurationChanged(newConfig);
253 | drawerToggle.onConfigurationChanged(newConfig);
254 | }
255 | }
256 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/urp/NewsActivity.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.app.ProgressDialog;
4 | import android.content.Intent;
5 | import android.os.Bundle;
6 | import android.os.Handler;
7 | import android.os.Message;
8 | import android.support.design.widget.Snackbar;
9 | import android.support.v7.app.AppCompatActivity;
10 | import android.util.Log;
11 | import android.widget.TextView;
12 |
13 | import com.jin123d.util.UrpUrl;
14 |
15 | import org.jsoup.Jsoup;
16 | import org.jsoup.nodes.Document;
17 | import org.jsoup.select.Elements;
18 |
19 | import java.io.IOException;
20 |
21 | public class NewsActivity extends AppCompatActivity {
22 | private String tv;
23 | private ProgressDialog progressDialog;
24 | private TextView textView;
25 | String URL;
26 |
27 | Handler handler = new Handler() {
28 | public void handleMessage(Message msg) {
29 | progressDialog.dismiss();
30 | if (msg.what == 1) {
31 | textView.setText(tv);
32 | } else {
33 | Snackbar.make(textView, "获取数据失败", Snackbar.LENGTH_SHORT).show();
34 |
35 | }
36 | }
37 | };
38 |
39 | @Override
40 | protected void onCreate(Bundle savedInstanceState) {
41 | super.onCreate(savedInstanceState);
42 | setContentView(R.layout.activity_news);
43 | Intent intent = getIntent();
44 | URL = intent.getStringExtra("URL");
45 | Log.d("url", URL);
46 | initView();
47 | getInfo();
48 | }
49 |
50 | private void initView() {
51 | progressDialog = new ProgressDialog(NewsActivity.this);
52 | progressDialog.setMessage(getString(R.string.getData));
53 | progressDialog.setCanceledOnTouchOutside(false);
54 | progressDialog.setCancelable(false);
55 | progressDialog.show();
56 | textView = (TextView) findViewById(R.id.tv_html);
57 |
58 | }
59 |
60 | public void getInfo() {
61 | new Thread() {
62 | public void run() {
63 | try {
64 | Document document = Jsoup.connect(UrpUrl.URL_JWC + URL).timeout(5000).get();
65 | Elements es = document.select("td[align=left]");
66 | tv = es.text();
67 |
68 | handler.sendEmptyMessage(1);
69 | } catch (IOException e) {
70 | handler.sendEmptyMessage(2);
71 | e.printStackTrace();
72 | }
73 | }
74 | }.start();
75 | }
76 |
77 |
78 | }
79 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/urp/TzggActivity.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.os.Handler;
6 | import android.os.Message;
7 | import android.support.design.widget.Snackbar;
8 | import android.util.Log;
9 | import android.view.View;
10 | import android.widget.AdapterView;
11 | import android.widget.ArrayAdapter;
12 | import android.widget.ListView;
13 | import android.widget.Toast;
14 |
15 | import com.jin123d.app.BaseActivity;
16 | import com.jin123d.models.TzggModels;
17 | import com.jin123d.util.UrpUrl;
18 |
19 | import org.jsoup.Jsoup;
20 | import org.jsoup.nodes.Document;
21 | import org.jsoup.nodes.Element;
22 | import org.jsoup.select.Elements;
23 |
24 | import java.io.IOException;
25 | import java.util.ArrayList;
26 | import java.util.List;
27 |
28 |
29 | public class TzggActivity extends BaseActivity {
30 | private ListView listView;
31 | private List lists;
32 | private ArrayAdapter arrayAdapter;
33 | private List list_tz;
34 | Handler handler = new Handler() {
35 | public void handleMessage(Message msg) {
36 | progressDialogDismiss();
37 | switch (msg.what) {
38 | case 1:
39 | arrayAdapter.notifyDataSetChanged();
40 | break;
41 | case 2:
42 | Snackbar.make(listView, "获取数据失败", Snackbar.LENGTH_SHORT).show();
43 | break;
44 | }
45 |
46 | }
47 | };
48 |
49 | @Override
50 | protected void onCreate(Bundle savedInstanceState) {
51 | super.onCreate(savedInstanceState);
52 | setContentView(R.layout.activity_tzgg);
53 | }
54 |
55 | @Override
56 | protected void initView() {
57 | listView = (ListView) findViewById(R.id.lv_news);
58 | lists = new ArrayList<>();
59 | list_tz = new ArrayList<>();
60 | arrayAdapter = new ArrayAdapter<>(TzggActivity.this, android.R.layout.simple_list_item_1, lists);
61 | listView.setAdapter(arrayAdapter);
62 | listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
63 | @Override
64 | public void onItemClick(AdapterView> parent, View view, int position, long id) {
65 | Intent intent = new Intent();
66 | intent.putExtra("URL", list_tz.get(position).getUrl());
67 | intent.setClass(TzggActivity.this, NewsActivity.class);
68 | startActivity(intent);
69 | }
70 | });
71 | listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
72 | @Override
73 | public boolean onItemLongClick(AdapterView> adapterView, View view, int i, long l) {
74 | Toast.makeText(TzggActivity.this, list_tz.get(i).getUrl(), Toast.LENGTH_SHORT).show();
75 | return true;
76 | }
77 | });
78 | }
79 |
80 | @Override
81 | protected void initData() {
82 | progressDialogShow();
83 | getInfo();
84 | }
85 |
86 | public void getInfo() {
87 | new Thread() {
88 | public void run() {
89 | try {
90 | String url = UrpUrl.URL_JWC + UrpUrl.URL_TZGG;
91 | Document document = Jsoup.connect(url).timeout(5000).get();
92 | Elements es = document.select("[style=height: 310px]").select("table[align=center]");
93 | // Log.d("内容",es.toString());
94 | for (int i = 0; i < es.size(); i++) {
95 | Element element = es.get(i).select("tbody").select("tr").select("td").get(1).select("span").get(0);
96 | Log.d("内容", element.toString());
97 | String linkHref = element.select("a").attr("href");
98 | Log.d("网址", linkHref);
99 | String title = element.text();
100 | lists.add(title);
101 | TzggModels tzggModels = new TzggModels(title, linkHref);
102 | list_tz.add(tzggModels);
103 | }
104 | handler.sendEmptyMessage(1);
105 | } catch (IOException e) {
106 | handler.sendEmptyMessage(2);
107 | e.printStackTrace();
108 | }
109 | }
110 | }.start();
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/urp/WebActivity.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.os.Bundle;
4 | import android.support.v7.app.AppCompatActivity;
5 | import android.view.View;
6 | import android.webkit.WebChromeClient;
7 | import android.webkit.WebSettings;
8 | import android.webkit.WebView;
9 | import android.webkit.WebViewClient;
10 | import android.widget.ProgressBar;
11 |
12 | public class WebActivity extends AppCompatActivity {
13 | private WebView web;
14 |
15 | @Override
16 | protected void onCreate(Bundle savedInstanceState) {
17 | super.onCreate(savedInstanceState);
18 | setContentView(R.layout.activity_web);
19 | web = (WebView) findViewById(R.id.web);
20 | final ProgressBar bar = (ProgressBar) findViewById(R.id.myProgressBar);
21 | WebSettings webSettings = web.getSettings();
22 | webSettings.setJavaScriptEnabled(true);
23 | web.loadUrl("http://www.jin123d.com/?p=176");
24 | web.setWebViewClient(new WebViewClient() {
25 | @Override
26 | public boolean shouldOverrideUrlLoading(WebView view, String url) {
27 | // TODO Auto-generated method stub
28 | //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
29 | view.loadUrl(url);
30 | return true;
31 | }
32 |
33 | });
34 |
35 | web.setWebChromeClient(new WebChromeClient() {
36 | @Override
37 | public void onProgressChanged(WebView view, int newProgress) {
38 | if (newProgress == 100) {
39 | bar.setVisibility(View.INVISIBLE);
40 | } else {
41 | if (View.INVISIBLE == bar.getVisibility()) {
42 | bar.setVisibility(View.VISIBLE);
43 | }
44 | bar.setProgress(newProgress);
45 | }
46 | super.onProgressChanged(view, newProgress);
47 | }
48 |
49 | });
50 | }
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/urp/XfjdActivity.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.os.Bundle;
4 | import android.widget.TextView;
5 | import android.widget.Toast;
6 |
7 | import com.jin123d.app.BaseActivity;
8 | import com.jin123d.util.ErrorCode;
9 | import com.jin123d.util.HttpUtil;
10 | import com.jin123d.util.okgo.JsoupCallBack;
11 |
12 | import org.jsoup.nodes.Document;
13 | import org.jsoup.select.Elements;
14 |
15 | import okhttp3.Response;
16 |
17 | public class XfjdActivity extends BaseActivity {
18 | private TextView tv_1;
19 | private TextView tv_2;
20 | private TextView tv_3;
21 | private TextView tv_4;
22 | private TextView tv_5;
23 | private TextView tv_6;
24 | private TextView tv_7;
25 |
26 | @Override
27 | protected void onCreate(Bundle savedInstanceState) {
28 | super.onCreate(savedInstanceState);
29 | setContentView(R.layout.activity_xfjd);
30 | }
31 |
32 | @Override
33 | protected void initView() {
34 | tv_1 = (TextView) findViewById(R.id.tv_1);
35 | tv_2 = (TextView) findViewById(R.id.tv_2);
36 | tv_3 = (TextView) findViewById(R.id.tv_3);
37 | tv_4 = (TextView) findViewById(R.id.tv_4);
38 | tv_5 = (TextView) findViewById(R.id.tv_5);
39 | tv_6 = (TextView) findViewById(R.id.tv_6);
40 | tv_7 = (TextView) findViewById(R.id.tv_7);
41 | }
42 |
43 | @Override
44 | protected void initData() {
45 | progressDialogShow();
46 | getInfo();
47 | }
48 |
49 | public void getInfo() {
50 | HttpUtil.getXfjd(this, new JsoupCallBack() {
51 | @Override
52 | public void onSuccess(Document document) {
53 | progressDialogDismiss();
54 | Elements es = document.select("thead").select("tr");
55 | if (es.size() > 0) {
56 | es = es.get(1).select("td");
57 | if (es.size() > 6) {
58 | tv_1.setText(es.get(0).text());
59 | tv_2.setText(es.get(1).text());
60 | tv_3.setText(es.get(2).text());
61 | tv_4.setText(es.get(3).text());
62 | tv_5.setText(es.get(4).text());
63 | tv_6.setText(es.get(5).text());
64 | tv_7.setText(es.get(6).text());
65 | } else {
66 | Toast.makeText(XfjdActivity.this, getString(R.string.error), Toast.LENGTH_SHORT).show();
67 | finish();
68 | }
69 | } else {
70 | Toast.makeText(XfjdActivity.this, getString(R.string.error), Toast.LENGTH_SHORT).show();
71 | finish();
72 | }
73 | }
74 |
75 | @Override
76 | public void onError(ErrorCode errorCode, Response response) {
77 | super.onError(errorCode, response);
78 | progressDialogDismiss();
79 | }
80 | });
81 | }
82 |
83 | }
84 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/urp/XjxxActivity.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.graphics.Bitmap;
4 | import android.os.Bundle;
5 | import android.widget.ImageView;
6 | import android.widget.TextView;
7 |
8 | import com.jin123d.app.BaseActivity;
9 | import com.jin123d.util.ErrorCode;
10 | import com.jin123d.util.HttpUtil;
11 | import com.jin123d.util.okgo.JsoupCallBack;
12 | import com.lzy.okgo.callback.BitmapCallback;
13 |
14 | import org.jsoup.nodes.Document;
15 | import org.jsoup.select.Elements;
16 |
17 | import okhttp3.Call;
18 | import okhttp3.Response;
19 |
20 | public class XjxxActivity extends BaseActivity {
21 | private TextView tv_html;
22 | private ImageView img_zp;
23 |
24 |
25 | @Override
26 | protected void onCreate(Bundle savedInstanceState) {
27 | super.onCreate(savedInstanceState);
28 | setContentView(R.layout.activity_xjxx);
29 | }
30 |
31 | @Override
32 | protected void initView() {
33 | tv_html = (TextView) findViewById(R.id.tv_html);
34 | img_zp = (ImageView) findViewById(R.id.img_zp);
35 | }
36 |
37 | @Override
38 | protected void initData() {
39 | progressDialogShow();
40 | getInfo();
41 | }
42 |
43 | public void getInfo() {
44 | HttpUtil.getXjxx(this, new JsoupCallBack() {
45 | @Override
46 | public void onError(ErrorCode errorCode, Response response) {
47 | progressDialogDismiss();
48 | }
49 |
50 | @Override
51 | public void onSuccess(Document document) {
52 | progressDialogDismiss();
53 | Elements es = document.select("table[id=tblView]");
54 | if (es.size() > 0) {
55 | Elements es_2 = es.get(0).select("tr");
56 | for (int i = 0; i < es_2.size(); i++) {
57 | Elements es_3 = es_2.get(i).select("td");
58 | for (int j = 0; j < es_3.size(); j++) {
59 | tv_html.setText(tv_html.getText().toString() + "\n" + es_3.get(j).text());
60 | }
61 | }
62 | }
63 | }
64 | });
65 |
66 | HttpUtil.getPic(this, new BitmapCallback() {
67 | @Override
68 | public void onSuccess(Bitmap bitmap, Call call, Response response) {
69 | img_zp.setImageBitmap(bitmap);
70 | }
71 |
72 | @Override
73 | public void onError(Call call, Response response, Exception e) {
74 | super.onError(call, response, e);
75 | progressDialogDismiss();
76 | }
77 | });
78 | }
79 |
80 | }
81 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/urp/ZjsjActivity.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.urp;
2 |
3 | import android.content.DialogInterface;
4 | import android.os.Bundle;
5 | import android.support.v7.app.AlertDialog;
6 | import android.widget.ListView;
7 |
8 | import com.jin123d.adapter.ZjsjAdapter;
9 | import com.jin123d.app.BaseActivity;
10 | import com.jin123d.models.ZjsjModels;
11 | import com.jin123d.util.ErrorCode;
12 | import com.jin123d.util.HttpUtil;
13 | import com.jin123d.util.JsoupUtil;
14 | import com.jin123d.util.okgo.JsoupCallBack;
15 |
16 | import org.jsoup.nodes.Document;
17 |
18 | import java.util.ArrayList;
19 | import java.util.List;
20 |
21 | import okhttp3.Response;
22 |
23 | public class ZjsjActivity extends BaseActivity {
24 | private ListView lv_zjsj;
25 | private ZjsjAdapter adapter;
26 | private List lists;
27 |
28 | @Override
29 | protected void onCreate(Bundle savedInstanceState) {
30 | super.onCreate(savedInstanceState);
31 | setContentView(R.layout.activity_zjsj);
32 | getData();
33 | }
34 |
35 | @Override
36 | protected void initView() {
37 | lv_zjsj = (ListView) findViewById(R.id.lv_zjsj);
38 | }
39 |
40 | @Override
41 | protected void initData() {
42 | lists = new ArrayList<>();
43 | adapter = new ZjsjAdapter(lists, ZjsjActivity.this);
44 | lv_zjsj.setAdapter(adapter);
45 | progressDialogShow();
46 | }
47 |
48 |
49 | private void getData() {
50 | HttpUtil.getZjsj(this, new JsoupCallBack() {
51 | @Override
52 | public void onSuccess(Document document) {
53 | progressDialogDismiss();
54 | if (getString(R.string.webTitleError).equals(document.title())) {
55 | String ErrorContent = document.body().text();
56 | AlertDialog.Builder dialog = new AlertDialog.Builder(ZjsjActivity.this);
57 | dialog.setTitle(document.title());
58 | dialog.setMessage(ErrorContent);
59 | dialog.setNegativeButton("确定", new DialogInterface.OnClickListener() {
60 | @Override
61 | public void onClick(DialogInterface dialogInterface, int i) {
62 | ZjsjActivity.this.finish();
63 | }
64 | });
65 | dialog.setCancelable(false);
66 | dialog.create().show();
67 | } else {
68 | lists.clear();
69 | lists.addAll(JsoupUtil.getZjsj(document));
70 | adapter.notifyDataSetChanged();
71 | }
72 | }
73 |
74 | @Override
75 | public void onError(ErrorCode errorCode, Response response) {
76 | super.onError(errorCode, response);
77 | progressDialogDismiss();
78 | }
79 | });
80 | }
81 |
82 |
83 | }
84 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/util/ErrorCode.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.util;
2 |
3 | /**
4 | * Created by jin123d on 11/19 0019.
5 | **/
6 |
7 | public enum ErrorCode {
8 | //获取数据超时
9 | TimeOUT,
10 | //cookie过期
11 | CookieExpire,
12 | //未知错误
13 | UnKnowError
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/util/HttpUtil.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.util;
2 |
3 | import android.graphics.Bitmap;
4 | import android.text.TextUtils;
5 |
6 | import com.jin123d.Interface.GetCodeListener;
7 | import com.jin123d.models.PgInfoModels;
8 | import com.jin123d.util.okgo.JsoupCallBack;
9 | import com.lzy.okgo.OkGo;
10 | import com.lzy.okgo.callback.BitmapCallback;
11 | import com.lzy.okgo.model.HttpHeaders;
12 | import com.lzy.okgo.model.HttpParams;
13 |
14 | import org.jsoup.nodes.Document;
15 |
16 | import okhttp3.Call;
17 | import okhttp3.Response;
18 |
19 |
20 | public class HttpUtil {
21 |
22 |
23 | /**
24 | * 获取验证码
25 | *
26 | * @param tag context
27 | * @param getCodeListener 回调
28 | */
29 | public static void getCode(Object tag, final GetCodeListener getCodeListener) {
30 | OkGo.get(TextUtils.concat(UrpUrl.URL, UrpUrl.URL_YZM).toString())
31 | .tag(tag)
32 | .execute(new BitmapCallback() {
33 | @Override
34 | public void onSuccess(Bitmap bitmap, Call call, Response response) {
35 | getCodeListener.getSuccess(bitmap);
36 | // bitmap 即为返回的图片数据
37 | UrpSpUtil.setCookie(UrlUtil.getCookie(response.header("Set-Cookie")));
38 | }
39 |
40 | @Override
41 | public void onError(Call call, Response response, Exception e) {
42 | super.onError(call, response, e);
43 | getCodeListener.getError(e.getMessage());
44 | }
45 | });
46 | }
47 |
48 | /**
49 | * 登录
50 | */
51 | public static void login(Object tag, String zjh, String mm, String v_yzm, JsoupCallBack callback) {
52 | HttpParams params = new HttpParams();
53 | params.put("zjh", zjh);
54 | params.put("mm", mm);
55 | params.put("v_yzm", v_yzm);
56 | OkGo.post(UrlUtil.getUrl(UrpUrl.URL_LOGIN))
57 | .params(params)
58 | .tag(tag)//
59 | .execute(callback);
60 | }
61 |
62 |
63 | /**
64 | * 学籍信息
65 | *
66 | * @param tag tag
67 | * @param jsoupCallBack 回调
68 | */
69 | public static void getXjxx(Object tag, JsoupCallBack jsoupCallBack) {
70 | OkGo.get(UrlUtil.getUrl(UrpUrl.URL_XJXX)).tag(tag).execute(jsoupCallBack);
71 | }
72 |
73 | /**
74 | * 获取照片
75 | *
76 | * @param tag tag
77 | * @param bitmapCallback 回调
78 | */
79 | public static void getPic(Object tag, BitmapCallback bitmapCallback) {
80 | OkGo.get(UrlUtil.getUrl(UrpUrl.URL_ZP)).tag(tag).headers(getHeader()).execute(bitmapCallback);
81 | }
82 |
83 | /**
84 | * 自主实践
85 | *
86 | * @param tag tag
87 | * @param jsoupCallBack 回调
88 | */
89 | public static void getZjsj(Object tag, JsoupCallBack jsoupCallBack) {
90 | OkGo.get(UrlUtil.getUrl(UrpUrl.URL_ZJSJ)).tag(tag).execute(jsoupCallBack);
91 | }
92 |
93 | /**
94 | * 学分绩点
95 | *
96 | * @param tag tag
97 | * @param jsoupCallBack 回调
98 | */
99 | public static void getXfjd(Object tag, JsoupCallBack jsoupCallBack) {
100 | OkGo.get(UrlUtil.getUrl(UrpUrl.URL_XFDJ)).tag(tag).execute(jsoupCallBack);
101 | }
102 |
103 |
104 | /**
105 | * 获取评估列表
106 | *
107 | * @param tag tag
108 | * @param jsoupCallBack 回调
109 | */
110 | public static void getJxpgList(Object tag, JsoupCallBack jsoupCallBack) {
111 | OkGo.get(UrlUtil.getUrl(UrpUrl.URL_JXPG_LIST)).tag(tag).execute(jsoupCallBack);
112 | }
113 |
114 | /**
115 | * 教学评估
116 | *
117 | * @param tag tag
118 | * @param pgInfoModels 评估科目
119 | * @param isZq 是否是中期评教
120 | * @param jsoupCallBack 回调
121 | */
122 | public static void pg_1(final Object tag, final PgInfoModels pgInfoModels, final boolean isZq, final JsoupCallBack jsoupCallBack) {
123 | HttpParams httpParams = new HttpParams();
124 | httpParams.put("wjbm", pgInfoModels.getWjbm());
125 | httpParams.put("bpr", pgInfoModels.getBpr());
126 | httpParams.put("pgnr", pgInfoModels.getPgnr());
127 | httpParams.put("oper", "wjShow");
128 | OkGo.post(UrlUtil.getUrl(UrpUrl.URL_PG)).params(httpParams).tag(tag).execute(new JsoupCallBack() {
129 | @Override
130 | public void onSuccess(Document document) {
131 | pg_2(tag, pgInfoModels, isZq, jsoupCallBack);
132 | }
133 | });
134 | }
135 |
136 | /**
137 | * @param tag tag
138 | * @param pgInfoModels 评估科目
139 | * @param isZq 是否是中期评教
140 | */
141 | private static void pg_2(Object tag, PgInfoModels pgInfoModels, boolean isZq, JsoupCallBack jsoupCallBack) {
142 | HttpParams httpParams = new HttpParams();
143 | httpParams.put("wjbm", pgInfoModels.getWjbm());
144 | httpParams.put("bpr", pgInfoModels.getBpr());
145 | httpParams.put("pgnr", pgInfoModels.getPgnr());
146 | if (isZq) {
147 | httpParams.put("0000000045", "10_1");
148 | } else {
149 | for (int i = 24; i <= 33; i++) {
150 | httpParams.put("00" + i, "100_1");
151 | }
152 | }
153 | httpParams.put("zgpj", "good");
154 | OkGo.post(UrlUtil.getUrl(UrpUrl.URL_JXPG)).params(httpParams).tag(tag).execute(jsoupCallBack);
155 | }
156 |
157 |
158 | /**
159 | * 获取不及格成绩列表
160 | *
161 | * @param tag tag
162 | * @param jsoupCallBack 回调
163 | */
164 | public static void getBJgList(Object tag, JsoupCallBack jsoupCallBack) {
165 | OkGo.get(UrlUtil.getUrl(UrpUrl.URL_BJG)).tag(tag).execute(jsoupCallBack);
166 | }
167 |
168 | /**
169 | * 获取全部成绩列表
170 | *
171 | * @param tag tag
172 | * @param jsoupCallBack 回调
173 | */
174 | public static void getAllCjList(Object tag, JsoupCallBack jsoupCallBack) {
175 | OkGo.get(UrlUtil.getUrl(UrpUrl.URL_QB)).tag(tag).execute(jsoupCallBack);
176 | }
177 |
178 |
179 | public static HttpHeaders getHeader() {
180 | HttpHeaders headers = new HttpHeaders();
181 | headers.put("Cookie", "JSESSIONID=" + UrpSpUtil.getCookie());
182 | return headers;
183 | }
184 | }
185 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/util/JsoupUtil.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.util;
2 |
3 | import android.text.TextUtils;
4 | import android.util.Log;
5 |
6 | import com.jin123d.Interface.UrpUserListener;
7 | import com.jin123d.models.CjModels;
8 | import com.jin123d.models.ZjsjModels;
9 |
10 | import org.jsoup.nodes.Document;
11 | import org.jsoup.select.Elements;
12 |
13 | import java.util.ArrayList;
14 | import java.util.List;
15 |
16 | /**
17 | * Created by jin123d on 11/3 0003.
18 | **/
19 |
20 | public class JsoupUtil {
21 |
22 |
23 | public static void isLogin(Document document, final UrpUserListener.UserStateListener isLoginListener) {
24 | String title = document.title();
25 | if (TextUtils.equals("学分制综合教务", title)) {
26 | //登录成功
27 | isLoginListener.loginSuccess();
28 | } else if (TextUtils.equals("URP 综合教务系统 - 登录", title)) {
29 | String error = document.select("[class=errorTop]").text();
30 | //登录失败
31 | isLoginListener.loginFailed(error);
32 | } else {
33 | isLoginListener.loginFailed("未知错误");
34 | Log.e("login", "未知错误");
35 | }
36 | }
37 |
38 |
39 | /**
40 | * 检查cookie是否过期
41 | *
42 | * @param document document
43 | * @return 过期true
44 | */
45 | public static boolean checkCookieExpire(Document document) {
46 | return TextUtils.equals("URP 综合教务系统 - 登录", document.title());
47 | }
48 |
49 |
50 | /**
51 | * 获取自主实践信息
52 | *
53 | * @param document document
54 | * @return 自主实践list
55 | */
56 | public static List getZjsj(Document document) {
57 | List list = new ArrayList<>();
58 | Elements e2 = document.select("table");
59 | if (e2.size() > 0) {
60 | Elements es = e2.get(4).select("tr");
61 | if (es.size() > 1) {
62 | for (int i = 1; i < es.size(); i++) {
63 | Elements e = es.get(i).select("td");
64 | if (e.size() > 4) {
65 | String mc = e.get(2).text();
66 | String bz = e.get(3).text();
67 | String xf = e.get(4).text();
68 | ZjsjModels ZjsjModels = new ZjsjModels(mc, bz, xf);
69 | list.add(ZjsjModels);
70 | }
71 | }
72 | }
73 | }
74 | return list;
75 | }
76 |
77 | public static List getAllCj(Document document) {
78 | List list = new ArrayList<>();
79 | Elements es = document.select("[class=titleTop2]");
80 | if (es.size() != 0) {
81 | for (int i = 0; i < es.size(); i++) {
82 | Elements es_2 = es.get(i).select("tr").select("td").select("table").get(0).select("tr");
83 | for (int j = 0; j < es_2.size(); j++) {
84 | Elements es_3 = es_2.get(j).select("td");
85 | if (es_3.size() > 0) {
86 | String ckm = es_3.get(2).text();
87 | String xf = es_3.get(4).text();
88 | String cj = es_3.get(6).text();
89 | CjModels cjModels = new CjModels(ckm, xf, cj);
90 | list.add(cjModels);
91 | }
92 | }
93 | }
94 | }
95 | return list;
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/app/src/main/java/com/jin123d/util/SpCache.java:
--------------------------------------------------------------------------------
1 | package com.jin123d.util;
2 |
3 | import android.content.Context;
4 | import android.content.SharedPreferences;
5 | import android.os.AsyncTask;
6 | import android.text.TextUtils;
7 | import android.util.Log;
8 |
9 | import java.lang.ref.SoftReference;
10 | import java.lang.reflect.InvocationTargetException;
11 | import java.lang.reflect.Method;
12 | import java.util.HashMap;
13 | import java.util.Map;
14 | import java.util.concurrent.ConcurrentHashMap;
15 | import java.util.concurrent.ConcurrentMap;
16 |
17 | /**
18 | * Created by zhy on 15/5/18.
19 | **/
20 | public class SpCache {
21 | private static final String TAG = SpCache.class.getSimpleName();
22 | private static SpCache INSTANCE;
23 | private ConcurrentMap> mCache;
24 | private String mPrefFileName = "set";
25 | private Context mContext;
26 |
27 |
28 | private SpCache(Context context, String prefFileName) {
29 | mContext = context.getApplicationContext();
30 | mCache = new ConcurrentHashMap>();
31 | initDatas(prefFileName);
32 |
33 | }
34 |
35 | private void initDatas(String prefFileName) {
36 | if (null != prefFileName && prefFileName.trim().length() > 0) {
37 | mPrefFileName = prefFileName;
38 | } else {
39 | Log.d(TAG, "prefFileName is invalid , we will use default value ");
40 | }
41 | //SharedPreferences sp = mContext.getSharedPreferences(mPrefFileName, Context.MODE_PRIVATE);
42 | //Map alreadyDatas = sp.getAll();
43 | //Set keys = alreadyDatas.keySet();
44 | //for (String key : keys)
45 | //{
46 | // mCache.put(key, new SoftReference