diff --git a/app/build.gradle b/app/build.gradle index 3b1aa0b..05fd5e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -60,12 +60,14 @@ android { productFlavors { beta { flavorDimensions "default" - versionCode 6 - versionName "1.5" + versionCode 9 + versionName "1.8" manifestPlaceholders = [ JPUSH_PKGNAME: "com.uiui.sn", JPUSH_APPKEY : "1a1e405ca5a1a5cd50e9f734", //JPush 上注册的包名对应的 Appkey. JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可. + XG_ACCESS_ID : "1500026387", + XG_ACCESS_KEY: "AG2PUQL7TEX5", ] buildConfigField "String", "SCREEN_URL", '"https://led.aolelearn.cn:3018/wm/is_online"' buildConfigField "String", "WEBSOCKET_URL", '"wss://led.aolelearn.cn:3018"' @@ -79,6 +81,8 @@ android { JPUSH_PKGNAME: "com.uiui.sn", JPUSH_APPKEY : "1a1e405ca5a1a5cd50e9f734", //JPush 上注册的包名对应的 Appkey. JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可. + XG_ACCESS_ID : "1500026387", + XG_ACCESS_KEY: "AG2PUQL7TEX5", ] buildConfigField "String", "SCREEN_URL", '"https://led.aolelearn.cn:3018/wm/is_online"' buildConfigField "String", "WEBSOCKET_URL", '"wss://led.aolelearn.cn:3018"' @@ -194,11 +198,12 @@ dependencies { // implementation fileTree(dir: 'libs', include: ['*.jar']) compileOnly files('libs/framework.jar') - implementation 'androidx.appcompat:appcompat:1.3.1' //implementation 'com.android.support:multidex:1.0.3' - implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'androidx.appcompat:appcompat:1.3.1' + implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' @@ -209,21 +214,24 @@ dependencies { //动态权限框架 implementation 'com.hjq:xxpermissions:6.0' //okhttp - implementation 'com.squareup.okhttp3:okhttp:4.9.1' + implementation 'com.squareup.okhttp3:okhttp:4.9.3' //Retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' - implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0' - //RxJava - implementation 'io.reactivex.rxjava2:rxjava:2.2.12' - implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' - //生命周期管理 - implementation 'com.trello.rxlifecycle2:rxlifecycle:2.2.2' - implementation 'com.trello.rxlifecycle2:rxlifecycle-android:2.2.2' - implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.2.2' + implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0' - implementation 'com.google.code.gson:gson:2.8.7' - implementation 'com.google.zxing:core:3.3.2' + //RxJava + implementation 'io.reactivex.rxjava3:rxjava:3.0.0' + implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' + //生命周期管理 + implementation 'com.trello.rxlifecycle4:rxlifecycle:4.0.2' + implementation 'com.trello.rxlifecycle4:rxlifecycle-android:4.0.2' + implementation 'com.trello.rxlifecycle4:rxlifecycle-components:4.0.2' + implementation 'com.trello.rxlifecycle4:rxlifecycle-components-preference:4.0.2' + implementation 'com.trello.rxlifecycle4:rxlifecycle-android-lifecycle:4.0.2' + + implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.zxing:core:3.4.1' implementation 'com.alibaba:fastjson:1.2.76' @@ -233,11 +241,13 @@ dependencies { implementation "org.java-websocket:Java-WebSocket:1.4.1" //MMKV - implementation 'com.tencent:mmkv-static:1.2.10' + implementation 'com.tencent:mmkv-static:1.2.12' + //腾讯移动推送 TPNS + implementation 'com.tencent.tpns:tpns:1.3.2.0-release' //高德地图定位 implementation 'com.amap.api:location:5.1.0' - //屏幕适配方案 - implementation 'com.blankj:utilcodex:1.30.6' + //工具类 + implementation 'com.blankj:utilcodex:1.31.0' //autosize会改变第三方view的大小 //https://github.com/JessYanCoding/AndroidAutoSize //implementation 'me.jessyan:autosize:1.2.1' @@ -245,15 +255,15 @@ dependencies { implementation 'com.github.chrisbanes:PhotoView:2.0.0' - implementation 'com.github.bumptech.glide:glide:4.11.0' - annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' + implementation 'com.github.bumptech.glide:glide:4.13.1' + annotationProcessor 'com.github.bumptech.glide:compiler:4.13.1' implementation 'com.jakewharton:butterknife:10.2.1' // If you are using Kotlin, replace annotationProcessor with kapt. // annotationProcessor rootProject.ext.dependencies["butterknife-compiler"] annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' //沉浸状态栏 - implementation 'com.gitee.zackratos:UltimateBarX:0.7.1' + implementation 'com.gitee.zackratos:UltimateBarX:0.8.0' } preBuild { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3eff373..3a13033 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,76 +16,97 @@ - - + + + + android:protectionLevel="signature" /> + + - - - - - + tools:ignore="ProtectedPermissions" /> + + + + + + + + + - + + + - - + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:theme="@style/ImmerseTheme" + tools:replace="android:allowBackup"> + - - - - - - + android:exported="true" /> @@ -104,8 +125,13 @@ + + @@ -137,10 +163,6 @@ - - - + + + + tools:replace="android:exported" /> + - + + + - + + + tools:replace="android:authorities" /> + + - + + + tools:replace="android:authorities" /> + - + + + @@ -258,10 +292,12 @@ - + + + android:exported="false" /> + - + + + - + + - - - - - + + + + + + + + + + - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:value="${JPUSH_APPKEY}" /> + diff --git a/app/src/main/java/com/uiui/sn/activity/GuideActivity.java b/app/src/main/java/com/uiui/sn/activity/GuideActivity.java deleted file mode 100644 index b646552..0000000 --- a/app/src/main/java/com/uiui/sn/activity/GuideActivity.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.uiui.sn.activity; - -import android.text.TextUtils; -import android.util.Log; -import android.view.View; - -import androidx.constraintlayout.widget.ConstraintLayout; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.bumptech.glide.Glide; -import com.github.chrisbanes.photoview.PhotoView; -import com.uiui.sn.R; -import com.uiui.sn.base.BaseActivity; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.manager.NetInterfaceManager; - -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; - -public class GuideActivity extends BaseActivity { - - private PhotoView mPhotoView; - private ConstraintLayout root; - - @Override - public int getLayoutId() { - return R.layout.activity_guide; - } - - @Override - public void initView() { - mPhotoView = findViewById(R.id.photoView); - root = findViewById(R.id.root); - root.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - finish(); - } - }); - mPhotoView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - finish(); - } - }); - } - - @Override - public void initData() { - getGuidePic(); - } - - private void getGuidePic() { - NetInterfaceManager.getInstance() - .getGetGuideControl() - .compose(this.bindToLifecycle()) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - Log.e("getGuidePic", "onSubscribe: "); - } - - @Override - public void onNext(BaseResponse baseResponse) { - Log.e("getGuidePic", "onNext: "); - int code = baseResponse.code; - if (code == 200) { - JSONObject jsonObject = JSON.parseObject(JSONObject.toJSONString(baseResponse.data)); - String file = jsonObject.getString("file"); - if (!TextUtils.isEmpty(file)) { - Log.e("getGuidePic", "onNext: " + file); - Glide.with(GuideActivity.this).load(file).into(mPhotoView); - } - } else { - - } - } - - @Override - public void onError(Throwable e) { - Log.e("getGuidePic", "onError: " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.e("getGuidePic", "onComplete: "); - } - }); - } - - -} diff --git a/app/src/main/java/com/uiui/sn/activity/PrivacyPolicyActivity.java b/app/src/main/java/com/uiui/sn/activity/PrivacyPolicyActivity.java deleted file mode 100644 index 9c7136d..0000000 --- a/app/src/main/java/com/uiui/sn/activity/PrivacyPolicyActivity.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.uiui.sn.activity; - -import android.util.Log; -import android.view.View; -import android.webkit.WebSettings; -import android.webkit.WebView; - -import com.uiui.sn.R; -import com.uiui.sn.base.BaseActivity; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; - -public class PrivacyPolicyActivity extends BaseActivity { - private WebView webView; - - @Override - public int getLayoutId() { - return R.layout.activity_privacypolicy; - } - - @Override - public void initView() { - webView = findViewById(R.id.webView); - - } - - @Override - public void initData() { - initWebView(); - webView.loadDataWithBaseURL(null, readAsset("privacy_policy.html"), "text/html", "UTF-8", null); - } - - private void initWebView() { - WebSettings webSettings = webView.getSettings(); - webSettings.setJavaScriptEnabled(true); - webSettings.setBlockNetworkImage(false); - //webSettings.setBuiltInZoomControls(true); - //webSettings.setSupportZoom(true); - webSettings.setUseWideViewPort(true); - webSettings.setLoadWithOverviewMode(true); - webSettings.setAllowFileAccess(true); - webSettings.setSupportMultipleWindows(true); - webSettings.setDomStorageEnabled(true); - webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); - webSettings.setTextZoom(100); - webSettings.setDefaultFontSize(200); //设置显示字体的大小 - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { - webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); - } - //控制webview不可点击 -// webView.setOnTouchListener(new View.OnTouchListener() { -// @Override -// public boolean onTouch(View v, MotionEvent event) { -// return true; -// } -// }); - webView.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View view) { - return true; - } - }); - } - - public String readAsset(String fileName) { - try { - //获取文件中的字节 - InputStream inputStream = getResources().getAssets().open(fileName); - //将字节转换为字符 - InputStreamReader isReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); - //使用bufferReader去读取内容 - BufferedReader reader = new BufferedReader(isReader); - StringBuffer stringBuffer = new StringBuffer(); - String out = ""; - while ((out = reader.readLine()) != null) { - stringBuffer.append(out); - Log.e("TAG", "readAsset: " + out); - } - return stringBuffer.toString(); - } catch (IOException e) { - e.printStackTrace(); - return ""; - } - } -} diff --git a/app/src/main/java/com/uiui/sn/activity/SNUidActivity.java b/app/src/main/java/com/uiui/sn/activity/SNUidActivity.java deleted file mode 100644 index 2245cb7..0000000 --- a/app/src/main/java/com/uiui/sn/activity/SNUidActivity.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.uiui.sn.activity; - -import android.content.Intent; -import android.text.TextUtils; -import android.util.Log; - -import androidx.constraintlayout.widget.ConstraintLayout; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.uiui.sn.R; -import com.uiui.sn.adapter.SNUidAdapter; -import com.uiui.sn.base.BaseActivity; -import com.uiui.sn.bean.zuoye.SNUidBean; -import com.uiui.sn.utils.ToastUtil; - -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class SNUidActivity extends BaseActivity { - @BindView(R.id.recyclerView) - RecyclerView mRecyclerView; - @BindView(R.id.root) - ConstraintLayout root; - private SNUidAdapter mAdapter = new SNUidAdapter(); - - @Override - public int getLayoutId() { - return R.layout.activity_sn_uid; - } - - @Override - public void initView() { - ButterKnife.bind(this); - mRecyclerView.setLayoutManager(new LinearLayoutManager(SNUidActivity.this)); - mRecyclerView.setAdapter(mAdapter); - root.setOnClickListener(view -> finish()); - } - - @Override - public void initData() { - Intent intent = getIntent(); - String jsonString = intent.getStringExtra("json"); - Log.e("TAG", "initData: " + jsonString); - if (TextUtils.isEmpty(jsonString)) { - ToastUtil.show("暂未获取到信息"); - finish(); - return; - } - JSONObject jsonObject = JSON.parseObject(jsonString); - JSONArray jsonArray = jsonObject.getJSONArray("card_info"); - List snUidBeads = JSON.parseArray(jsonArray.toJSONString(), SNUidBean.class); - if (snUidBeads == null) { - - } else { - mAdapter.setSnUidBeans(snUidBeads); - } - } - -} diff --git a/app/src/main/java/com/uiui/sn/activity/ScreenLockActivity.java b/app/src/main/java/com/uiui/sn/activity/ScreenLockActivity.java deleted file mode 100644 index 49b13d1..0000000 --- a/app/src/main/java/com/uiui/sn/activity/ScreenLockActivity.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.uiui.sn.activity; - -import android.content.Intent; -import android.os.Bundle; -import android.view.KeyEvent; -import android.view.WindowManager; - -import androidx.appcompat.app.AppCompatActivity; - -import com.uiui.sn.R; - - -public class ScreenLockActivity extends AppCompatActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); - setContentView(R.layout.activity_screen_lock); - - } - - @Override - protected void onDestroy() { - super.onDestroy(); - startActivity(new Intent(this, this.getClass())); - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { - return false; - } - return super.onKeyDown(keyCode, event); - } - - @Override - public void onBackPressed() { - - } -} diff --git a/app/src/main/java/com/uiui/sn/activity/SplashActivity.java b/app/src/main/java/com/uiui/sn/activity/SplashActivity.java new file mode 100644 index 0000000..bf4957c --- /dev/null +++ b/app/src/main/java/com/uiui/sn/activity/SplashActivity.java @@ -0,0 +1,43 @@ +package com.uiui.sn.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.view.WindowManager; + +import androidx.appcompat.app.AppCompatActivity; + +import com.uiui.sn.R; +import com.uiui.sn.activity.main.MainActivity; +import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; + + +public class SplashActivity extends AppCompatActivity { + private static String TAG = SplashActivity.class.getSimpleName(); + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); + setBar(); + setContentView(R.layout.activity_home); + + new Handler().postDelayed(() -> { + startActivity(new Intent(SplashActivity.this, MainActivity.class)); + finish(); + }, 2000); + } + + private void setBar() { + UltimateBarX.statusBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(true) + .apply(); + UltimateBarX.navigationBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(true) + .apply(); + } +} diff --git a/app/src/main/java/com/uiui/sn/activity/UserAgreementActivity.java b/app/src/main/java/com/uiui/sn/activity/UserAgreementActivity.java deleted file mode 100644 index 82264c0..0000000 --- a/app/src/main/java/com/uiui/sn/activity/UserAgreementActivity.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.uiui.sn.activity; - -import android.util.Log; -import android.view.View; -import android.webkit.WebSettings; -import android.webkit.WebView; - -import com.uiui.sn.R; -import com.uiui.sn.base.BaseActivity; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; - -public class UserAgreementActivity extends BaseActivity { - private WebView webView; - - @Override - public int getLayoutId() { - return R.layout.activity_useragreement; - } - - @Override - public void initView() { - webView = findViewById(R.id.webView); - - } - - @Override - public void initData() { - initWebView(); - webView.loadDataWithBaseURL(null, readAsset("user_agreement.html"), "text/html", "UTF-8", null); - } - - private void initWebView() { - WebSettings webSettings = webView.getSettings(); - webSettings.setJavaScriptEnabled(true); - webSettings.setBlockNetworkImage(false); - //webSettings.setBuiltInZoomControls(true); - //webSettings.setSupportZoom(true); - webSettings.setUseWideViewPort(true); - webSettings.setLoadWithOverviewMode(true); - webSettings.setAllowFileAccess(true); - webSettings.setSupportMultipleWindows(true); - webSettings.setDomStorageEnabled(true); - webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); - webSettings.setTextZoom(100); - webSettings.setDefaultFontSize(200); //设置显示字体的大小 - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { - webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); - } - //控制webview不可点击 -// webView.setOnTouchListener(new View.OnTouchListener() { -// @Override -// public boolean onTouch(View v, MotionEvent event) { -// return true; -// } -// }); - webView.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View view) { - return true; - } - }); - } - - public String readAsset(String fileName) { - try { - //获取文件中的字节 - InputStream inputStream = getResources().getAssets().open(fileName); - //将字节转换为字符 - InputStreamReader isReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); - //使用bufferReader去读取内容 - BufferedReader reader = new BufferedReader(isReader); - StringBuffer stringBuffer = new StringBuffer(); - String out = ""; - while ((out = reader.readLine()) != null) { - stringBuffer.append(out); - Log.e("TAG", "readAsset: " + out); - } - return stringBuffer.toString(); - } catch (IOException e) { - e.printStackTrace(); - return ""; - } - } -} diff --git a/app/src/main/java/com/uiui/sn/activity/main/MainAContact.java b/app/src/main/java/com/uiui/sn/activity/main/MainAContact.java new file mode 100644 index 0000000..630434c --- /dev/null +++ b/app/src/main/java/com/uiui/sn/activity/main/MainAContact.java @@ -0,0 +1,31 @@ +package com.uiui.sn.activity.main; + +import android.graphics.Bitmap; + +import com.uiui.sn.base.BasePresenter; +import com.uiui.sn.base.BaseView; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.bean.SnInfo; + +public class MainAContact { + public interface MainView extends BaseView { + void setSnInfo(BaseResponse response); + void setAppletQRCode(String url); + void setQRCode(Bitmap bitmap); + void checkUpdateFinish(); + void setForceInstall(); + } + + interface Presenter extends BasePresenter { + /*获取设备信息*/ + void getSnInfo(); + /*获取小程序二维码*/ + void getAppletQRCode(); + /*获取二维码*/ + void getQRCode(); + /*检查更新*/ + void checkUpdate(); + /*获取强制下载*/ + void getForceInstall(); + } +} diff --git a/app/src/main/java/com/uiui/sn/activity/main/MainAPresenter.java b/app/src/main/java/com/uiui/sn/activity/main/MainAPresenter.java new file mode 100644 index 0000000..56c8225 --- /dev/null +++ b/app/src/main/java/com/uiui/sn/activity/main/MainAPresenter.java @@ -0,0 +1,181 @@ +package com.uiui.sn.activity.main; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.graphics.Bitmap; +import android.provider.Settings; +import android.text.TextUtils; +import android.util.Log; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiui.sn.bean.AppInfo; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.bean.SnInfo; +import com.uiui.sn.config.CommonConfig; +import com.uiui.sn.network.HTTPInterface; +import com.uiui.sn.network.NetInterfaceManager; +import com.uiui.sn.utils.ApkUtils; +import com.uiui.sn.utils.CXAESUtil; +import com.uiui.sn.utils.JGYUtils; +import com.uiui.sn.utils.SPUtils; +import com.uiui.sn.utils.Utils; + +import java.util.HashSet; +import java.util.List; + +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.subjects.BehaviorSubject; + +/** + * @author jgy02 + */ +public class MainAPresenter implements MainAContact.Presenter { + private String TAG = MainAPresenter.class.getSimpleName(); + + private MainAContact.MainView mView; + private Context mContext; + + public MainAPresenter(Context context) { + this.mContext = context; + } + + private BehaviorSubject lifecycle; + + public void setLifecycle(BehaviorSubject lifecycle) { + this.lifecycle = lifecycle; + } + + public BehaviorSubject getLifecycle() { + return lifecycle; + } + + @Override + public void attachView(MainAContact.MainView view) { + this.mView = view; + } + + @Override + public void detachView() { + this.mView = null; + } + + @Override + public void getSnInfo() { + NetInterfaceManager.getInstance() + .getSnInfo(lifecycle, new NetInterfaceManager.ObserverCallback() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(BaseResponse response) { + mView.setSnInfo(response); + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); + } + + @Override + public void getAppletQRCode() { + NetInterfaceManager.getInstance() + .getQRCodeApiControl() + .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + Log.e("getAppletQRCode", "onSubscribe: "); + } + + @Override + public void onNext(BaseResponse baseResponse) { + Log.e("getAppletQRCode", "onNext: "); + if (baseResponse.code == 200) { + JSONObject jsonObject = (JSONObject) JSON.toJSON(baseResponse.data); + String url = jsonObject.getString("file"); + mView.setAppletQRCode(url); + } else { + mView.setAppletQRCode(""); + } + } + + @Override + public void onError(Throwable e) { + Log.e("getAppletQRCode", "onError: " + e.getMessage()); + mView.setAppletQRCode(""); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("getAppletQRCode", "onComplete: "); + } + }); + } + + @Override + public void getQRCode() { + String encryptString = CXAESUtil.encrypt(CommonConfig.AES_KEY, Utils.getSerial()); + Log.e(TAG + TAG, "setImageAndText: " + encryptString); + Bitmap bitmap = Utils.createQRImage(encryptString, 400, 400); + mView.setQRCode(bitmap); + } + + @Override + public void checkUpdate() { + mView.checkUpdateFinish(); + } + + @Override + public void getForceInstall() { + NetInterfaceManager.getInstance() + .getForceInstallControl() + .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) + .subscribe(new Observer>>() { + @Override + public void onSubscribe(Disposable d) { + Log.e(TAG + "getForceInstall", "onSubscribe: "); + } + + @Override + public void onNext(BaseResponse> listBaseResponse) { + Log.e(TAG + "getForceInstall", "onNext: " + listBaseResponse); + int code = listBaseResponse.code; + if (code == 200) { + List appInfos = listBaseResponse.data; + if (null != appInfos && appInfos.size() != 0) { + HTTPInterface.getForceInstallState(mContext, appInfos); + } + } else { + boolean qch_force_app = JGYUtils.putString(mContext.getContentResolver(), "qch_force_app", "invalid"); + Log.e(TAG + TAG, "qch_force_app: invalid: " + qch_force_app); + } + } + + @Override + public void onError(Throwable e) { + Log.e(TAG + "getForceInstall", "onError: " + e.getMessage()); + onComplete(); + } + + @Override + public void onComplete() { + Log.e(TAG + "getForceInstall", "onComplete: "); + mView.setForceInstall(); + } + }); + } +} diff --git a/app/src/main/java/com/uiui/sn/activity/main/MainActivity.java b/app/src/main/java/com/uiui/sn/activity/main/MainActivity.java index 663dccf..5858f83 100644 --- a/app/src/main/java/com/uiui/sn/activity/main/MainActivity.java +++ b/app/src/main/java/com/uiui/sn/activity/main/MainActivity.java @@ -1,68 +1,46 @@ package com.uiui.sn.activity.main; +import android.annotation.SuppressLint; import android.content.BroadcastReceiver; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.graphics.Bitmap; -import android.net.Uri; import android.os.AsyncTask; import android.os.SystemClock; -import android.provider.Settings; import android.text.TextUtils; import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; -import android.view.View; import android.view.WindowManager; import android.widget.ImageView; import android.widget.TextView; -import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; -import androidx.viewpager.widget.ViewPager; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.blankj.utilcode.util.NetworkUtils; import com.bumptech.glide.Glide; -import com.flyco.tablayout.SlidingTabLayout; import com.uiui.sn.BuildConfig; import com.uiui.sn.R; -import com.uiui.sn.activity.GuideActivity; -import com.uiui.sn.activity.PrivacyPolicyActivity; -import com.uiui.sn.activity.SNUidActivity; -import com.uiui.sn.activity.UserAgreementActivity; -import com.uiui.sn.activity.selectegrade.SelecteGradeActivity; import com.uiui.sn.base.BaseActivity; -import com.uiui.sn.bean.gankao.AvailableProduct; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.bean.zuoye.UserInfo; -import com.uiui.sn.config.Configs; -import com.uiui.sn.config.Scheme; -import com.uiui.sn.dialog.ActivationDialog; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.bean.SnInfo; +import com.uiui.sn.config.CommonConfig; import com.uiui.sn.dialog.UserDebugDialog; import com.uiui.sn.fragment.AppletQRCodeFragment; import com.uiui.sn.fragment.BaseFragmentPagerAdapter; import com.uiui.sn.fragment.QRCodeFragment; -import com.uiui.sn.jpush.ExampleUtil; -import com.uiui.sn.jpush.LocalBroadcastManager; -import com.uiui.sn.jpush.TagAliasOperatorHelper; -import com.uiui.sn.manager.NetInterfaceManager; -import com.uiui.sn.network.HTTPInterface; -import com.uiui.sn.receiver.BootReceiver; +import com.uiui.sn.manager.ControlManager; +import com.uiui.sn.manager.DeviceManager; import com.uiui.sn.service.ControlPanelService; import com.uiui.sn.service.DownloadService; import com.uiui.sn.service.GuardService; -import com.uiui.sn.service.MainService; import com.uiui.sn.service.ManagerService; import com.uiui.sn.service.StepService; -import com.uiui.sn.manager.ControlManager; -import com.uiui.sn.manager.DeviceManager; +import com.uiui.sn.service.main.MainService; import com.uiui.sn.utils.JGYUtils; -import com.uiui.sn.utils.LaunchTools; import com.uiui.sn.utils.SPUtils; import com.uiui.sn.utils.TimeUtils; import com.uiui.sn.utils.ToastUtil; @@ -71,21 +49,14 @@ import com.uiui.sn.utils.Utils; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; -import java.util.Set; import butterknife.BindView; import butterknife.ButterKnife; import cn.jpush.android.api.JPushInterface; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; -import static com.uiui.sn.jpush.TagAliasOperatorHelper.ACTION_SET; - -public class MainActivity extends BaseActivity implements MainContact.MainView, NetworkUtils.OnNetworkStatusChangedListener { - private final String TAG = MainActivity.class.getSimpleName(); +public class MainActivity extends BaseActivity implements MainAContact.MainView, NetworkUtils.OnNetworkStatusChangedListener { + private static final String TAG = MainActivity.class.getSimpleName(); @BindView(R.id.tv_exit) TextView tv_exit; @@ -106,10 +77,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, @BindView(R.id.iv_exit) ImageView iv_exit; - private MainPresenter mPresenter = new MainPresenter(this); - private long time0; - private long timeMillis; - public static boolean isForeground = false; + private MainAPresenter mPresenter = new MainAPresenter(this); @Override public void onDisconnected() { @@ -126,37 +94,37 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, return R.layout.activity_main; } + @SuppressLint("SetTextI18n") @Override public void initView() { Utils.getAndroiodScreenProperty(this); + ButterKnife.bind(this); - mPresenter.setProvider(this); + mPresenter.setLifecycle(lifecycleSubject); mPresenter.attachView(this); - mPresenter.setAlias(); + NetworkUtils.registerNetworkStatusChangedListener(this); setOnClickListener(); - String rom = JGYUtils.getCustomVersion(); - tv_customversion.setText(rom); + tv_customversion.setText(JGYUtils.getCustomVersion()); tv_sn.setText("SN:" + Utils.getSerial()); tv_version.setText(BuildConfig.VERSION_NAME); - initTabLayout(); - readOldData(); - TimeTask task = new TimeTask(); + + task = new TimeTask(); task.execute("ntp.aliyun.com"); - getQRCodeURL(); + //更新设备信息之后停止停止这两个应用以免获取不到信息 int versionCode = (int) SPUtils.get(this, "versionCode", 0); if (versionCode < BuildConfig.VERSION_CODE) { -// JGYUtils.getInstance().killBackgroundProcesses(this, "com.jiaoguanyi.os"); -// JGYUtils.getInstance().killBackgroundProcesses(this, "com.gankao.gkwxhd"); SPUtils.put(this, "versionCode", BuildConfig.VERSION_CODE); } JGYUtils.getInstance().wakeUpAppstore(); JGYUtils.getInstance().wakeUpUpdateTools(); } - private class TimeTask extends AsyncTask { + private TimeTask task; + + private static class TimeTask extends AsyncTask { @Override protected Long doInBackground(String... strings) { return TimeUtils.getTimeFromNtpServer(strings[0]); @@ -171,15 +139,12 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, @Override public void initData() { - HTTPInterface.setBrowserWhiteList(this); if (DeviceManager.isDebugMode()) { Log.e(TAG, "getAllSPUtils: " + JSONObject.toJSONString(SPUtils.getAll(this))); -// TimeUtils.setSystemTime(1627702095000L); Log.e(TAG, "getWeekDay: " + TimeUtils.inWeekDay()); Log.e(TAG, "getWeekDay: " + TimeUtils.inWeekDay(1627702095000L)); Log.e(TAG, "getWeekDayString: " + new TimeUtils().getWeekDayString()); Log.e(TAG, "getWeekDayString: " + new TimeUtils().getWeekDayString(1627702095000L)); -// DeviceManager.doMasterClear(); } JPushInterface.init(this); if (DeviceManager.isDebugMode()) { @@ -187,47 +152,27 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, } startService(); registerReceiver(); - setJpush(); - HTTPInterface.sendAppUsed(this); - HTTPInterface.sendRunningApp(this); - HTTPInterface.getAPPinfo(this); - time0 = System.currentTimeMillis(); - timeMillis = System.currentTimeMillis(); - mPresenter.getQRCode(); -// mPresenter.getInfo(); - mPresenter.getUserInfo(); - mPresenter.queryPowerUserList(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mPresenter.detachView(); - NetworkUtils.unregisterNetworkStatusChangedListener(this); - startService(); } @Override protected void onResume() { super.onResume(); - mPresenter.getUserInfo(); mPresenter.getSnInfo(); - isForeground = true; } @Override protected void onPause() { super.onPause(); - isForeground = false; } @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == KeyEvent.ACTION_DOWN) { - exit(); - return true; - } - return super.onKeyDown(keyCode, event); + protected void onDestroy() { + super.onDestroy(); + task.cancel(true); + task = null; + mPresenter.detachView(); + NetworkUtils.unregisterNetworkStatusChangedListener(this); + startService(); } @Override @@ -238,53 +183,20 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, } } - private void getQRCodeURL() { - NetInterfaceManager.getInstance() - .getQRCodeApiControl() - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - Log.e("getQRCodeURL", "onSubscribe: "); - } - - @Override - public void onNext(BaseResponse baseResponse) { - Log.e("getQRCodeURL", "onNext: "); - if (baseResponse.code == 200) { - JSONObject jsonObject = (JSONObject) JSON.toJSON(baseResponse.data); - String url = jsonObject.getString("file"); - if (!TextUtils.isEmpty(url)) { - Glide.with(iv_appqrcode) - .load(url) - .dontAnimate() - .placeholder(getDrawable(R.drawable.applet_qrcode)) - .into(iv_appqrcode); - } else { - iv_appqrcode.setImageDrawable(getDrawable(R.drawable.applet_qrcode)); - } - } else { - iv_appqrcode.setImageDrawable(getDrawable(R.drawable.applet_qrcode)); - } - } - - @Override - public void onError(Throwable e) { - Log.e("getQRCodeURL", "onError: " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.e("getQRCodeURL", "onComplete: "); - } - }); + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == KeyEvent.ACTION_DOWN) { + lazyExit(); + return true; + } + return super.onKeyDown(keyCode, event); } - private boolean isDebugMode() { if (DeviceManager.isDebugMode()) { return true; } else { - return (boolean) SPUtils.get(this, Configs.userDebugMode, false); + return (boolean) SPUtils.get(this, CommonConfig.userDebugMode, false); } } @@ -299,7 +211,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, mDEBUGHits[mDEBUGHits.length - 1] = SystemClock.uptimeMillis(); if (mDEBUGHits[0] >= SystemClock.uptimeMillis() - DEBUGDURATION) { mDEBUGHits = new long[DEBUGCOUNTS]; //重新初始化数组 - if ((boolean) SPUtils.get(MainActivity.this, Configs.EnableDebug, false)) { + if ((boolean) SPUtils.get(MainActivity.this, CommonConfig.EnableDebug, false)) { ToastUtil.show("已经是Debug模式"); } else { showDebugDialog(); @@ -313,7 +225,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, @Override public void onPositiveClick() { if ("53680320".equals(dialog.getEdittext())) { - SPUtils.put(MainActivity.this, Configs.EnableDebug, true); + SPUtils.put(MainActivity.this, CommonConfig.EnableDebug, true); ToastUtil.show("进入用户Debug模式"); } else { ToastUtil.show("密码错误"); @@ -340,49 +252,11 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, BaseFragmentPagerAdapter adapter = new BaseFragmentPagerAdapter(fragmentManager, fragmentList); } - private void setJpush() { - String rid = JPushInterface.getRegistrationID(this); - if (TextUtils.isEmpty(rid)) { - ToastUtil.debugShow("RegId:" + rid); - Log.e("RegId", rid); - } - } - - private long mExitTime; - - private void exit() { - if (System.currentTimeMillis() - this.mExitTime > (long) 2000) { - ToastUtil.show("再按一次退出程序"); - this.mExitTime = System.currentTimeMillis(); - } else { - this.finish(); - } - } - - private void readOldData() { - int statu = (int) SPUtils.get(this, Configs.isLogined, 0); - switch (statu) { - default: - break; - case 0: -// tv_note.setText("设备未绑定"); - break; - case 1: -// tv_note.setText("设备已绑定"); - break; - case 2: -// tv_note.setText("未经验证的设备,请联系客服"); - break; - } - } - private void setOnClickListener() { iv_exit.setOnClickListener(view -> lazyExit()); tv_title.setOnClickListener(view -> { if (isDebugMode()) { enterUserDebug(); - } else { - } }); } @@ -398,222 +272,6 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, } } - private void showActivationDialog() { - ActivationDialog dialog = new ActivationDialog(this); - dialog.setMessage("是否激活学习系统") - .setTitle("激活") - .setPositive("确定") - .setNegtive("取消") - .setOnClickBottomListener(new ActivationDialog.OnClickBottomListener() { - @Override - public void onPositiveClick() { -// mPresenter.checkSN(); - dialog.dismiss(); - } - - @Override - public void onNegtiveClick() { - dialog.dismiss(); - } - }); - dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); - dialog.show(); - } - - private void toDesktop() { - try { - Intent intent = new Intent(activation); - ComponentName componentName = new ComponentName("com.android.uiuios", "com.android.uiuios.activity.MainActivity"); - intent.setComponent(componentName); - startActivity(intent); - } catch (Exception e) { - ToastUtil.show("未安装桌面"); - Log.e("toDesktop", "Exception: " + e.getMessage()); - } - } - - @Override - public void setPowerUserList(String date) { - - } - - @Override - public void checkSNFinish(int code) { - switch (code) { - case 200: - case 300: - mPresenter.getGankaoUID(); - ToastUtil.show("设备验证成功"); - break; - case 400: - ToastUtil.show("此设备未经授权,禁止激活"); - break; - case 404: - ToastUtil.show("网络连接失败,稍后重试"); - break; - default: - break; - } - } - - @Override - public void setGankaoUID(@NotNull String gankaoUID) { - if (TextUtils.isEmpty(gankaoUID)) { - ToastUtil.show("用户注册失败"); - } else { - ToastUtil.show("用户注册成功"); - mPresenter.queryAvailableProduct(gankaoUID); - } - } - - @Override - public void setAvailableProduct(@NotNull List availableProductList, String gankaoUID) { - setGrade(availableProductList, gankaoUID); - } - - /** - * @param list 通过年纪获取对应的产品id - */ - private void setGrade(List list, String gankaoUID) { - if (list == null || list.size() == 0) { - ToastUtil.show("获取激活套餐失败"); - } else { - AvailableProduct defaultProduct = null; - AvailableProduct primary = null; - AvailableProduct junior = null; - AvailableProduct high = null; - for (AvailableProduct product : list) { - if (product.getDuration().contains("全学段")) { - defaultProduct = product; - } - if (product.getDuration().contains("小学")) { - primary = product; - } - if (product.getDuration().contains("初中")) { - junior = product; - } - if (product.getDuration().contains("高中")) { - high = product; - } - } - String grade = Settings.System.getString(getContentResolver(), "UserInfo_grade"); - if (TextUtils.isEmpty(grade)) { - grade = "一年级"; - } - switch (grade) { - default: - activeUser(defaultProduct, gankaoUID); - break; -// case "一年级": -// case "二年级": -// case "三年级": -// case "四年级": -// case "五年级": -// case "六年级": -// activeUser(junior); -// break; -// case "七年级": -// case "八年级": -// case "九年级": -// activeUser(primary); -// break; -// case "高一": -// case "高二": -// case "高三": -// activeUser(high); -// break; - } - } - } - - /** - * @param product 通过产品id激活设备 - */ - private void activeUser(AvailableProduct product, String gankaoUID) { - if (product == null) { - ToastUtil.show("获取激活套餐失败"); - return; - } - mPresenter.activeUser(product, gankaoUID); - } - - @Override - public void activeUserFinish(int code) { - switch (code) { - case 10000: - ToastUtil.show("授权成功"); - toGankaoApp(); - break; - case 50000: - ToastUtil.show("已经授权"); - toGankaoApp(); - break; - case 0: - default: - ToastUtil.show("授权失败"); - break; - } - } - - @Override - public void setAlias() { - setJpushAlias(); - Log.e(TAG, "setAlias: " + "finish"); - mPresenter.getBatch(); - } - - private void setJpushAlias() { - String alias = Utils.getSerial(); - TagAliasOperatorHelper.TagAliasBean tagAliasBean = new TagAliasOperatorHelper.TagAliasBean(); - tagAliasBean.action = ACTION_SET; - TagAliasOperatorHelper.sequence++; - tagAliasBean.alias = alias; - tagAliasBean.isAliasAction = true; - TagAliasOperatorHelper.getInstance().handleAction(this, TagAliasOperatorHelper.sequence, tagAliasBean); - } - - private void setTag(Set set) { - TagAliasOperatorHelper.TagAliasBean tagAliasBean = new TagAliasOperatorHelper.TagAliasBean(); - tagAliasBean.action = ACTION_SET; - TagAliasOperatorHelper.sequence++; - tagAliasBean.tags = set; - tagAliasBean.isAliasAction = false; - TagAliasOperatorHelper.getInstance().handleAction(this, TagAliasOperatorHelper.sequence, tagAliasBean); - } - - @Override - public void setBatch(String batch) { - HashSet hashSet = new HashSet(); - hashSet.add(batch); - hashSet.removeIf(o -> TextUtils.isEmpty(o.toString())); - if (hashSet.size() != 0) { - setTag(hashSet); - } else { - Log.e(TAG, "setBatch: " + "hashSet size is 0"); - } - } - - private void toGankaoApp() { - String gankaoUID = (String) SPUtils.get(MainActivity.this, "gankaoUID", ""); - if (TextUtils.isEmpty(gankaoUID)) { - ToastUtil.show("获取用户信息失败"); - return; - } - HashMap keys = new HashMap(); - //device_id 传入赶考 UID 可实现账户公用,不会创建新账号 - keys.put("device_id", Uri.encode(gankaoUID)); - keys.put("partner_id", Scheme.partner_id); - keys.put("macaddr", Uri.encode(Utils.getAndroid7MAC())); - try { - String uri = LaunchTools.toUserCenter(MainActivity.this, keys, Uri.encode(Scheme.ownCenter)); -// Scheme.openScheme(MainActivity.this, Scheme.getLogin(MainActivity.this)); - Scheme.openScheme(MainActivity.this, uri); -// LaunchTools.goGankao(MainActivity.this, "", ""); - } catch (Exception e) { - e.printStackTrace(); - } - } - private final int COUNTS = 4; // 点击次数 private final long DURATION = 2 * 1000; // 规定有效时间 private long[] mHits = new long[COUNTS]; @@ -629,8 +287,6 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, } } - public static String activation = "gankao_activation"; - private void startService() { startService(new Intent(this, MainService.class)); startService(new Intent(this, GuardService.class)); @@ -638,11 +294,9 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, startService(new Intent(this, DownloadService.class)); startService(new Intent(this, ManagerService.class)); startService(new Intent(this, ControlPanelService.class)); - } private void registerReceiver() { - registerMessageReceiver(); registerRefreshReceiver(); } @@ -666,189 +320,63 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, } } - //for receive customer msg from jpush server - private MessageReceiver mMessageReceiver = new MessageReceiver(); - private String MESSAGE_RECEIVED_ACTION = "com.uiui.sn.MESSAGE_RECEIVED_ACTION"; - private String KEY_TITLE = "title"; - private String KEY_MESSAGE = "message"; - private String KEY_EXTRAS = "extras"; - - private void registerMessageReceiver() { - IntentFilter filter = new IntentFilter(); - filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); - filter.addAction(MESSAGE_RECEIVED_ACTION); - LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, filter); + @Override + public void setSnInfo(BaseResponse response) { + if (response != null) { + int code = response.code; + setDeviceBindStatu(code); + } } - class MessageReceiver extends BroadcastReceiver { - @Override - public void onReceive(Context context, Intent intent) { - if (MESSAGE_RECEIVED_ACTION.equals(intent.getAction())) { - String messge = intent.getStringExtra(KEY_MESSAGE); - String extras = intent.getStringExtra(KEY_EXTRAS); - StringBuilder showMsg = new StringBuilder(); - showMsg.append(KEY_MESSAGE + " : " + messge + "\n"); - if (!ExampleUtil.isEmpty(extras)) { - showMsg.append(KEY_EXTRAS + " : " + extras + "\n"); - } - } + private void setDeviceBindStatu(int code) { + //设备已经绑定 + if (code == 200) { + tv_bind.setText(getString(R.string.bind_succeed)); + mPresenter.getAppletQRCode(); } + //设备没有绑定 + else if (code == 300) { + tv_bind.setText(getString(R.string.scan_tips)); + ControlManager.getInstance().setDisableSetting(); + mPresenter.getAppletQRCode(); + } + //没有授权的设备 + else if (code == 400) { + tv_bind.setText(getString(R.string.device_unauthorized)); + ToastUtil.show(getString(R.string.device_unauthorized)); + Log.e(TAG, "setSnInfo: " + getString(R.string.device_unauthorized)); + ControlManager.getInstance().setDisableSetting(); + } + } + + @Override + public void setAppletQRCode(String url) { + if (!TextUtils.isEmpty(url)) { + Glide.with(iv_appqrcode) + .load(url) + .dontAnimate() + .placeholder(getDrawable(R.drawable.applet_qrcode)) + .into(iv_appqrcode); + } else { + iv_appqrcode.setImageDrawable(getDrawable(R.drawable.applet_qrcode)); + } + mPresenter.getQRCode(); } @Override public void setQRCode(@NotNull Bitmap bitmap) { qr_code.setImageBitmap(bitmap); - mPresenter.initAmap(); - } - - @Override - public void setSnInfo(BaseResponse response) { - if (response != null) { - int code = response.code; - //设备已经绑定 - if (code == 200) { - tv_bind.setText(getString(R.string.bind_succeed)); - UserInfo userInfo = response.data; - boolean username = Settings.System.putString(getContentResolver(), "UserInfo_username", userInfo.getSn_name()); - boolean gread = Settings.System.putString(getContentResolver(), "UserInfo_grade", userInfo.getGrade()); - SPUtils.put(this, "member_id", userInfo.getMember_id()); - SPUtils.put(this, "sn_id", userInfo.getId()); - if (!TextUtils.isEmpty(userInfo.getSn_name())) { - SPUtils.put(this, "USERINFO_NAME", userInfo.getSn_name()); - } - if (!TextUtils.isEmpty(userInfo.getSchool())) { - SPUtils.put(this, "USERINFO_SCHOOL", userInfo.getSchool()); - } - if (!TextUtils.isEmpty(userInfo.getGrade())) { - SPUtils.put(this, "USERINFO_GRADE", userInfo.getGrade()); - } - mPresenter.getLocked(); - } - //设备没有绑定 - else if (code == 300) { - tv_bind.setText(getString(R.string.scan_tips)); - ControlManager.getInstance().setDisableSetting(); - } - //没有授权的设备 - else if (code == 400) { - tv_bind.setText("设备未经授权"); - ToastUtil.show("设备未经授权"); - Log.e(TAG, "setInfo: " + "设备未经授权"); - ControlManager.getInstance().setDisableSetting(); - } - } - Log.e(TAG, "setInfo: " + (System.currentTimeMillis() - time0) + "ms"); - mPresenter.getSnUid(); - } - - private String SnUidJSON; - - @Override - public void setSnUid(JSONObject jsonObject) { - if (jsonObject != null) { - this.SnUidJSON = jsonObject.toJSONString(); - String uid = jsonObject.getString("uid"); - if (!TextUtils.isEmpty(uid)) { - Settings.System.putString(getContentResolver(), "gankaoUID", uid); - } -// long activate_time = jsonObject.getLong("activate_time"); -// String card_info = jsonObject.getString("card_info"); -// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); -// Date d1 = new Date(activate_time * 1000); -// int grade = jsonObject.getIntValue("grade"); -// SPUtils.put(MainActivity.this, "int_grade", grade); -// String t1 = format.format(d1); -// tv_vip.setText(card_info); -// tv_activate.setText(t1 + " 激活"); - } else { - mPresenter.registerGankao(); - } - } - - @Override - public void setGankao(String gankaoUID) { - - } - - @Override - public void setUserInfo() { - - } - - @Override - public void setLocked(int lockedStatus) { - switch (lockedStatus) { - case 0: -// tv_note.setText("设备未绑定"); - ControlManager.getInstance().setDisableSetting(); - break; - case 1: -// tv_note.setText("设备已绑定"); - break; - case 2: - ControlManager.getInstance().setDisableSetting(); -// tv_note.setText("未经验证的设备,请联系客服"); - break; - default: - break; - } mPresenter.checkUpdate(); } - @Override - public void onLocationChanged() { - HTTPInterface.updateAdminInfo(this); - } - @Override public void checkUpdateFinish() { - mPresenter.getAllApp(); - } - - @Override - public void getAllAppFinish() { - mPresenter.getAppInside(); - } - - @Override - public void setAppInside() { mPresenter.getForceInstall(); } @Override public void setForceInstall() { - mPresenter.getSystemSettings(); - } - @Override - public void setSystemSettings() { - mPresenter.getBrowserLabel(); } - - @Override - public void setBrowserLabel() { - mPresenter.getBrowserWhiteList(); - } - - @Override - public void setBrowserWhiteList() { - mPresenter.getAppStart(); - } - - @Override - public void setAppStart() { - mPresenter.getTimeControl(); - } - - @Override - public void setTimeControl() { - mPresenter.getScreenLock(); - } - - @Override - public void setScreenLock() { - Log.e(TAG, "SettingFinished: " + (System.currentTimeMillis() - timeMillis) + " ms"); - } - } diff --git a/app/src/main/java/com/uiui/sn/activity/main/MainContact.java b/app/src/main/java/com/uiui/sn/activity/main/MainContact.java deleted file mode 100644 index 72a358e..0000000 --- a/app/src/main/java/com/uiui/sn/activity/main/MainContact.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.uiui.sn.activity.main; - -import android.graphics.Bitmap; - -import com.alibaba.fastjson.JSONObject; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.bean.zuoye.UserInfo; -import com.uiui.sn.bean.gankao.AvailableProduct; -import com.uiui.sn.mvp.BasePresenter; -import com.uiui.sn.mvp.BaseView; - -import java.util.List; - -public class MainContact { - public interface MainView extends BaseView { - void setPowerUserList(String date); - void checkSNFinish(int code); - void setGankaoUID(String gankaoUID); - void setAvailableProduct(List availableProductList, String gankaoUID); - void activeUserFinish(int code); - - void setAlias(); - void setBatch(String batch); - void setQRCode(Bitmap bitmap); - void setSnInfo(BaseResponse response); - void setSnUid(JSONObject jsonObject); - void setGankao(String gankaoUID); - void setUserInfo(); - void setLocked(int lockedStatus); - void onLocationChanged(); - void checkUpdateFinish(); - void getAllAppFinish(); - void setAppInside(); - void setForceInstall(); - void setSystemSettings(); - void setBrowserLabel(); - void setBrowserWhiteList(); - void setAppStart(); - void setTimeControl(); - void setScreenLock(); - } - - interface Presenter extends BasePresenter { - void queryPowerUserList(); - void checkSN(); - void getGankaoUID(); - void queryAvailableProduct(String gankaoUID); - void activeUser(AvailableProduct product, String gankaoUID); - - //设置别名 - void setAlias(); - //获取班级id - void getBatch(); - //获取二维码 - void getQRCode(); - //获取设备信息 - void getSnInfo(); - //获取激活时间 - void getSnUid(); - //注册赶考账号 - void registerGankao(); - //获取头像昵称 - void getUserInfo(); - //获取锁定状态 - void getLocked(); - //初始化地图 - void initAmap(); - //检查更新 - void checkUpdate(); - //获取所有app包名 - void getAllApp(); - //获取id管控 - void getAppInside(); - //获取强制下载 - void getForceInstall(); - //获取系统设置 - void getSystemSettings(); - //获取浏览器书签 - void getBrowserLabel(); - //获取浏览器黑白名单 - void getBrowserWhiteList(); - //应用自启 - void getAppStart(); - //获取时间管控、 - void getTimeControl(); - //获取锁屏管控 - void getScreenLock(); - - } -} diff --git a/app/src/main/java/com/uiui/sn/activity/selectegrade/SelecteGradeActivity.java b/app/src/main/java/com/uiui/sn/activity/selectegrade/SelecteGradeActivity.java deleted file mode 100644 index fd6e6c8..0000000 --- a/app/src/main/java/com/uiui/sn/activity/selectegrade/SelecteGradeActivity.java +++ /dev/null @@ -1,382 +0,0 @@ -package com.uiui.sn.activity.selectegrade; - -import android.net.Uri; -import android.text.TextUtils; -import android.view.View; -import android.widget.Button; -import android.widget.RadioButton; -import android.widget.RadioGroup; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.uiui.sn.R; -import com.uiui.sn.base.BaseActivity; -import com.uiui.sn.bean.gankao.AvailableProduct; -import com.uiui.sn.bean.gankao.PowerUser; -import com.uiui.sn.config.Scheme; -import com.uiui.sn.utils.LaunchTools; -import com.uiui.sn.utils.SPUtils; -import com.uiui.sn.utils.ToastUtil; -import com.uiui.sn.utils.Utils; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.TimeZone; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; - -public class SelecteGradeActivity extends BaseActivity implements SelecteGradeContact.MainView { - @BindView(R.id.radioGroup1) - RadioGroup radioGroup1; - @BindView(R.id.radioGroup2) - RadioGroup radioGroup2; - @BindView(R.id.radioGroup3) - RadioGroup radioGroup3; - @BindView(R.id.radioGroup4) - RadioGroup radioGroup4; - @BindView(R.id.radioButton1) - RadioButton radioButton1; - @BindView(R.id.radioButton2) - RadioButton radioButton2; - @BindView(R.id.radioButton3) - RadioButton radioButton3; - @BindView(R.id.radioButton4) - RadioButton radioButton4; - @BindView(R.id.radioButton5) - RadioButton radioButton5; - @BindView(R.id.radioButton6) - RadioButton radioButton6; - @BindView(R.id.radioButton7) - RadioButton radioButton7; - @BindView(R.id.radioButton8) - RadioButton radioButton8; - @BindView(R.id.radioButton9) - RadioButton radioButton9; - @BindView(R.id.radioButton10) - RadioButton radioButton10; - @BindView(R.id.radioButton11) - RadioButton radioButton11; - @BindView(R.id.radioButton12) - RadioButton radioButton12; - - @BindView(R.id.bt_unactivation) - Button bt_unactivation; - @BindView(R.id.bt_activation) - Button bt_activation; - - - @OnClick({R.id.radioButton1, R.id.radioButton2, R.id.radioButton3, R.id.radioButton4, R.id.radioButton5, R.id.radioButton6, - R.id.radioButton7, R.id.radioButton8, R.id.radioButton9, R.id.radioButton10, R.id.radioButton11, R.id.radioButton12}) - public void onClick(View v) { - switch (v.getId()) { - default: - break; - case R.id.radioButton1: - showGroup1(); - grade = 1; - break; - case R.id.radioButton2: - showGroup1(); - grade = 2; - break; - case R.id.radioButton3: - showGroup1(); - grade = 3; - break; - case R.id.radioButton4: - showGroup2(); - grade = 4; - break; - case R.id.radioButton5: - showGroup2(); - grade = 5; - break; - case R.id.radioButton6: - showGroup2(); - grade = 6; - break; - case R.id.radioButton7: - showGroup3(); - grade = 7; - break; - case R.id.radioButton8: - showGroup3(); - grade = 8; - break; - case R.id.radioButton9: - showGroup3(); - grade = 9; - break; - case R.id.radioButton10: - showGroup4(); - grade = 10; - break; - case R.id.radioButton11: - showGroup4(); - grade = 11; - break; - case R.id.radioButton12: - showGroup4(); - grade = 12; - break; - } - } - - private int grade; - private SelecteGradePresenter mPresenter = new SelecteGradePresenter(this); - - private void showGroup1() { - radioGroup2.clearCheck(); - radioGroup3.clearCheck(); - radioGroup4.clearCheck(); - } - - private void showGroup2() { - radioGroup1.clearCheck(); - radioGroup3.clearCheck(); - radioGroup4.clearCheck(); - } - - private void showGroup3() { - radioGroup1.clearCheck(); - radioGroup2.clearCheck(); - radioGroup4.clearCheck(); - } - - private void showGroup4() { - radioGroup1.clearCheck(); - radioGroup2.clearCheck(); - radioGroup3.clearCheck(); - } - - @Override - public int getLayoutId() { - return R.layout.activity_selecte_grade; - } - - @Override - public void initView() { - ButterKnife.bind(this); - mPresenter.setProvider(this); - mPresenter.attachView(this); - } - - @Override - public void initData() { - setOnclick(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mPresenter.detachView(); - } - - private void setOnclick() { - bt_unactivation.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - finish(); - } - }); - bt_activation.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - checkGrade(); - } - }); - } - - private void checkGrade() { - if (grade == 0) { - ToastUtil.show("请选择激活年级"); - return; - } - - mPresenter.checkSN(); - } - - @Override - public void checkSNResult(int code) { - switch (code) { - case 200: - case 300: - mPresenter.getGankaoUID(); - ToastUtil.show("设备验证成功"); - break; - case 400: - ToastUtil.show("此设备未经授权,禁止激活"); - break; - case 404: - ToastUtil.show("网络连接失败,稍后重试"); - break; - default: - break; - } - } - - @Override - public void setGankaoUID(String gankaoUID) { - if (TextUtils.isEmpty(gankaoUID)) { - ToastUtil.show("用户注册失败"); - } else { - ToastUtil.show("用户注册成功"); - mPresenter.queryAvailableProduct(); - } - } - - private HashMap mAvailableProductHashMap = new HashMap<>(); - - @Override - public void setAvailableProduct(List availableProductList) { - for (AvailableProduct product : availableProductList) { - mAvailableProductHashMap.put(product.getDuration(), product.getSpecification_id()); - } - setGrade(availableProductList); - } - - private void setGrade(List list) { - if (list == null || list.size() == 0) { - ToastUtil.show("获取激活套餐失败"); - } else { - AvailableProduct defaultProduct = null; - AvailableProduct primary = null; - AvailableProduct junior = null; - AvailableProduct high = null; - for (AvailableProduct product : list) { - if (product.getDuration().contains("全学段")) { - defaultProduct = product; - } - if (product.getDuration().contains("小学")) { - primary = product; - } - if (product.getDuration().contains("初中")) { - junior = product; - } - if (product.getDuration().contains("高中")) { - high = product; - } - } - switch (grade) { - default: - break; - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - activeUser(primary, grade); - break; - case 7: - case 8: - case 9: - activeUser(junior, grade); - break; - case 10: - case 11: - case 12: - activeUser(high, grade); - break; - } - SPUtils.put(SelecteGradeActivity.this, "int_grade", grade); - } - } - - /** - * @param product 通过产品id激活设备 - */ - private void activeUser(AvailableProduct product, int grade) { - if (product == null) { - ToastUtil.show("获取激活套餐失败"); - return; - } - mPresenter.activeUser(product, grade); - } - - @Override - public void activeUserFinish(int code, int grade) { - switch (code) { - case 10000: - ToastUtil.show("授权成功"); - break; - case 50000: - ToastUtil.show("已经授权"); - break; - case 0: - default: - ToastUtil.show("授权失败"); - break; - } - mPresenter.queryPowerUserList(grade); - } - - @Override - public void queryPowerUserListFinish(List powerUserList, int grade) { - JSONArray jsonArray = new JSONArray(); - if (powerUserList != null && powerUserList.size() != 0) { - for (PowerUser powerUser : powerUserList) { - if (powerUser.getUserID().equals(Utils.getSerial())) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("card_info", powerUser.getAuthorityName()); - jsonObject.put("grade", powerUser.getGrade()); - jsonObject.put("activate_time", getTime(powerUser.getAuthorizationDate())); - jsonObject.put("user_power_id", powerUser.getAuthorizationNumber()); - jsonObject.put("specification_id", mAvailableProductHashMap.get(powerUser.getAuthorityName())); - jsonArray.add(jsonObject); - } - } - } - mPresenter.sendUid(jsonArray.toJSONString(), grade); - } - - private String getTime(String timestamp) { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S'Z'"); - sdf.setTimeZone(TimeZone.getTimeZone("GMT+00")); - SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - try { - Date date = sdf.parse(timestamp);//拿到Date对象. - String str = sdf2.format(date); - return str; - } catch (ParseException e) { - e.printStackTrace(); - return timestamp; - } - } - - @Override - public void sendUidFinish(int code) { - if (code == 200) { - toGankaoApp(); - finish(); - } else { - ToastUtil.show("保存信息失败请重试"); - } - } - - private void toGankaoApp() { - String gankaoUID = (String) SPUtils.get(SelecteGradeActivity.this, "gankaoUID", ""); - if (TextUtils.isEmpty(gankaoUID)) { - ToastUtil.show("获取用户信息失败"); - return; - } - HashMap keys = new HashMap(); - //device_id 传入赶考 UID 可实现账户公用,不会创建新账号 - keys.put("device_id", Uri.encode(gankaoUID)); - keys.put("partner_id", Scheme.partner_id); - keys.put("macaddr", Uri.encode(Utils.getAndroid7MAC())); - try { - String uri = LaunchTools.toUserCenter(SelecteGradeActivity.this, keys, Uri.encode(Scheme.ownCenter)); -// Scheme.openScheme(MainActivity.this, Scheme.getLogin(MainActivity.this)); - Scheme.openScheme(SelecteGradeActivity.this, uri); -// LaunchTools.goGankao(MainActivity.this, "", ""); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/app/src/main/java/com/uiui/sn/activity/selectegrade/SelecteGradeContact.java b/app/src/main/java/com/uiui/sn/activity/selectegrade/SelecteGradeContact.java deleted file mode 100644 index b98864b..0000000 --- a/app/src/main/java/com/uiui/sn/activity/selectegrade/SelecteGradeContact.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.uiui.sn.activity.selectegrade; - -import com.uiui.sn.bean.gankao.AvailableProduct; -import com.uiui.sn.bean.gankao.PowerUser; -import com.uiui.sn.mvp.BasePresenter; -import com.uiui.sn.mvp.BaseView; - -import java.util.List; - -public class SelecteGradeContact { - public interface MainView extends BaseView { - void checkSNResult(int code); - void setGankaoUID(String gankaoUID); - void setAvailableProduct(List availableProductList); - void activeUserFinish(int code,int grade); - void queryPowerUserListFinish(List powerUserList, int grade); - void sendUidFinish(int code); - } - - interface Presenter extends BasePresenter { - void checkSN(); - void getGankaoUID(); - void queryAvailableProduct(); - void activeUser(AvailableProduct product,int grade); - void queryPowerUserList(int grade); - void sendUid(String jsonString,int grade); - } - - -} diff --git a/app/src/main/java/com/uiui/sn/activity/selectegrade/SelecteGradePresenter.java b/app/src/main/java/com/uiui/sn/activity/selectegrade/SelecteGradePresenter.java deleted file mode 100644 index 117e403..0000000 --- a/app/src/main/java/com/uiui/sn/activity/selectegrade/SelecteGradePresenter.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.uiui.sn.activity.selectegrade; - -import android.content.Context; -import android.provider.Settings; -import android.text.TextUtils; -import android.util.Log; - -import com.alibaba.fastjson.JSONObject; -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.google.gson.reflect.TypeToken; -import com.uiui.sn.activity.main.MainActivity; -import com.uiui.sn.activity.main.MainPresenter; -import com.uiui.sn.bean.gankao.AvailableProduct; -import com.uiui.sn.bean.gankao.CreateUserBean; -import com.uiui.sn.bean.gankao.GankaoBaseResponse; -import com.uiui.sn.bean.gankao.PowerUser; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.bean.zuoye.Response; -import com.uiui.sn.bean.zuoye.UserInfo; -import com.uiui.sn.config.Scheme; -import com.uiui.sn.manager.NetInterfaceManager; -import com.uiui.sn.utils.LaunchTools; -import com.uiui.sn.utils.SPUtils; -import com.uiui.sn.utils.ToastUtil; -import com.uiui.sn.utils.Utils; -import com.trello.rxlifecycle2.LifecycleProvider; -import com.trello.rxlifecycle2.android.ActivityEvent; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; - -public class SelecteGradePresenter implements SelecteGradeContact.Presenter { - private String TAG; - - private SelecteGradeContact.MainView mView; - private Context mContext; - - SelecteGradePresenter(Context context) { - this.mContext = context; - TAG = context.getClass().getSimpleName() + "." + MainPresenter.class.getSimpleName() + ":"; - } - - private LifecycleProvider provider; - - public void setProvider(LifecycleProvider provider) { - this.provider = provider; - } - - public LifecycleProvider getProvider() { - return provider; - } - - @Override - public void attachView(SelecteGradeContact.MainView view) { - this.mView = view; - } - - @Override - public void detachView() { - this.mView = null; - } - - @Override - public void checkSN() { - NetInterfaceManager.getInstance() - .getsnInfoControl() - .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY)) - .subscribe(new Observer>() { - @Override - public void onSubscribe(Disposable d) { - Log.e(TAG + "checkSN", "onSubscribe: "); - } - - @Override - public void onNext(BaseResponse userInfoBaseResponse) { - Log.e(TAG + "checkSN", "onNext: "); - int code = userInfoBaseResponse.code; - mView.checkSNResult(code); - } - - @Override - public void onError(Throwable e) { - Log.e(TAG + "checkSN", "onError: " + e.getMessage()); - mView.checkSNResult(404); - onComplete(); - } - - @Override - public void onComplete() { - Log.e(TAG + TAG + "checkSN", "onComplete: "); - } - }); - } - - @Override - public void getGankaoUID() { - - } - - @Override - public void queryAvailableProduct() { - - } - - @Override - public void activeUser(AvailableProduct product, int grade) { - - } - - @Override - public void queryPowerUserList(int grade) { - - } - - @Override - public void sendUid(String jsonString, int grade) { - String gankaoUID = Settings.System.getString(mContext.getContentResolver(), "gankaoUID"); - if (TextUtils.isEmpty(gankaoUID)) { - ToastUtil.show("获取设备UID失败,请重新激活"); - } - Log.e(TAG, "sendUid: " + jsonString); - NetInterfaceManager.getInstance() - .getSaveSnUidApiControl() - .saveSnUid(Utils.getSerial(), gankaoUID, grade, jsonString) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY)) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - Log.e(TAG + "sendUid", "onSubscribe: "); - } - - @Override - public void onNext(Response response) { - Log.e(TAG + "sendUid", "onNext: " + JSONObject.toJSONString(response)); - mView.sendUidFinish(response.code); - } - - @Override - public void onError(Throwable e) { - Log.e(TAG + "sendUid", "onError: " + e.getMessage()); - mView.sendUidFinish(404); - onComplete(); - } - - @Override - public void onComplete() { - Log.e(TAG + "sendUid", "onComplete: "); - } - }); - } -} diff --git a/app/src/main/java/com/uiui/sn/adapter/SNUidAdapter.java b/app/src/main/java/com/uiui/sn/adapter/SNUidAdapter.java deleted file mode 100644 index 58a5d67..0000000 --- a/app/src/main/java/com/uiui/sn/adapter/SNUidAdapter.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.uiui.sn.adapter; - -import android.view.View; -import android.view.ViewGroup; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.uiui.sn.R; -import com.uiui.sn.bean.zuoye.SNUidBean; - -import java.util.List; - -public class SNUidAdapter extends RecyclerView.Adapter { - - private List snUidBeans; - - public void setSnUidBeans(List uidBeads) { - this.snUidBeans = uidBeads; - notifyDataSetChanged(); - } - - @NonNull - @Override - public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); - View v = View.inflate(parent.getContext(), R.layout.item_snuid, null); - v.setLayoutParams(layoutParams); - return new ViewHolder(v); - } - - @Override - public void onBindViewHolder(@NonNull ViewHolder holder, int position) { - SNUidBean snUidBean = snUidBeans.get(position); - holder.tv_name.setText(snUidBean.getCard_info()); - holder.tv_grade.setText(String.valueOf(snUidBean.getGrade())); - holder.tv_time.setText(snUidBean.getActivate_time()); - } - - @Override - public int getItemCount() { - return snUidBeans == null ? 0 : snUidBeans.size(); - } - - class ViewHolder extends RecyclerView.ViewHolder { - TextView tv_name; - TextView tv_grade; - TextView tv_time; - - ViewHolder(@NonNull View itemView) { - super(itemView); - tv_name = itemView.findViewById(R.id.tv_name); - tv_grade = itemView.findViewById(R.id.tv_grade); - tv_time = itemView.findViewById(R.id.tv_time); - } - } - -} diff --git a/app/src/main/java/com/uiui/sn/utils/AmapUtils.java b/app/src/main/java/com/uiui/sn/amap/AmapUtils.java similarity index 99% rename from app/src/main/java/com/uiui/sn/utils/AmapUtils.java rename to app/src/main/java/com/uiui/sn/amap/AmapUtils.java index 6157f41..498a546 100644 --- a/app/src/main/java/com/uiui/sn/utils/AmapUtils.java +++ b/app/src/main/java/com/uiui/sn/amap/AmapUtils.java @@ -1,7 +1,7 @@ /** * */ -package com.uiui.sn.utils; +package com.uiui.sn.amap; import android.content.Context; import android.content.pm.PackageInfo; diff --git a/app/src/main/java/com/uiui/sn/base/CheckPermissionsActivity.java b/app/src/main/java/com/uiui/sn/amap/CheckPermissionsActivity.java similarity index 99% rename from app/src/main/java/com/uiui/sn/base/CheckPermissionsActivity.java rename to app/src/main/java/com/uiui/sn/amap/CheckPermissionsActivity.java index b25c6ab..f1a161e 100644 --- a/app/src/main/java/com/uiui/sn/base/CheckPermissionsActivity.java +++ b/app/src/main/java/com/uiui/sn/amap/CheckPermissionsActivity.java @@ -1,7 +1,7 @@ /** * */ -package com.uiui.sn.base; +package com.uiui.sn.amap; import android.Manifest; import android.annotation.TargetApi; diff --git a/app/src/main/java/com/uiui/sn/base/BaseActivity.java b/app/src/main/java/com/uiui/sn/base/BaseActivity.java index c8e4bf8..ac515b6 100644 --- a/app/src/main/java/com/uiui/sn/base/BaseActivity.java +++ b/app/src/main/java/com/uiui/sn/base/BaseActivity.java @@ -4,15 +4,31 @@ import android.app.ActivityManager; import android.os.Build; import android.os.Bundle; +import androidx.annotation.CallSuper; +import androidx.annotation.CheckResult; +import androidx.annotation.ContentView; +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import com.trello.rxlifecycle4.LifecycleProvider; +import com.trello.rxlifecycle4.LifecycleTransformer; +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.trello.rxlifecycle4.android.RxLifecycleAndroid; +import com.trello.rxlifecycle4.components.support.RxAppCompatActivity; import com.uiui.sn.BuildConfig; import com.uiui.sn.R; -import com.trello.rxlifecycle2.components.support.RxAppCompatActivity; import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.subjects.BehaviorSubject; + + +public abstract class BaseActivity extends AppCompatActivity implements LifecycleProvider { + public final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); -public abstract class BaseActivity extends RxAppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -53,4 +69,68 @@ public abstract class BaseActivity extends RxAppCompatActivity { */ public abstract void initData(); + public BaseActivity() { + super(); + } + + @ContentView + public BaseActivity(@LayoutRes int contentLayoutId) { + super(contentLayoutId); + } + + @Override + @NonNull + @CheckResult + public final Observable lifecycle() { + return lifecycleSubject.hide(); + } + + @Override + @NonNull + @CheckResult + public final LifecycleTransformer bindUntilEvent(@NonNull ActivityEvent event) { + return RxLifecycle.bindUntilEvent(lifecycleSubject, event); + } + + @Override + @NonNull + @CheckResult + public final LifecycleTransformer bindToLifecycle() { + return RxLifecycleAndroid.bindActivity(lifecycleSubject); + } + + @Override + @CallSuper + protected void onStart() { + super.onStart(); + lifecycleSubject.onNext(ActivityEvent.START); + } + + @Override + @CallSuper + protected void onResume() { + super.onResume(); + lifecycleSubject.onNext(ActivityEvent.RESUME); + } + + @Override + @CallSuper + protected void onPause() { + lifecycleSubject.onNext(ActivityEvent.PAUSE); + super.onPause(); + } + + @Override + @CallSuper + protected void onStop() { + lifecycleSubject.onNext(ActivityEvent.STOP); + super.onStop(); + } + + @Override + @CallSuper + protected void onDestroy() { + lifecycleSubject.onNext(ActivityEvent.DESTROY); + super.onDestroy(); + } } diff --git a/app/src/main/java/com/uiui/sn/base/BaseApplication.java b/app/src/main/java/com/uiui/sn/base/BaseApplication.java index cbc5566..0b36466 100644 --- a/app/src/main/java/com/uiui/sn/base/BaseApplication.java +++ b/app/src/main/java/com/uiui/sn/base/BaseApplication.java @@ -8,16 +8,21 @@ import android.os.Looper; import android.util.Log; import com.arialyy.aria.core.Aria; +import com.tencent.android.tpush.XGIOperateCallback; +import com.tencent.android.tpush.XGPushConfig; +import com.tencent.android.tpush.XGPushManager; import com.tencent.mmkv.MMKV; import com.uiui.sn.BuildConfig; import com.uiui.sn.jpush.TagAliasOperatorHelper; import com.uiui.sn.manager.AmapManager; +import com.uiui.sn.manager.ConnectManager; import com.uiui.sn.manager.ControlPanelManager; -import com.uiui.sn.manager.NetInterfaceManager; +import com.uiui.sn.network.NetInterfaceManager; import com.uiui.sn.manager.ControlManager; import com.uiui.sn.manager.DeviceManager; import com.uiui.sn.network.HTTPInterface; import com.uiui.sn.network.UrlAddress; +import com.uiui.sn.rlog.LogDBManager; import com.uiui.sn.utils.AppUsedTimeUtils; import com.uiui.sn.utils.JGYUtils; import com.uiui.sn.utils.ToastUtil; @@ -26,15 +31,17 @@ import com.uiui.sn.utils.Utils; import org.jetbrains.annotations.NotNull; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.TimeUnit; import cn.jpush.android.api.JPushInterface; import cn.jpush.android.api.JPushMessage; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.ObservableEmitter; +import io.reactivex.rxjava3.core.ObservableOnSubscribe; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; @@ -78,11 +85,14 @@ public class BaseApplication extends Application { if (!BuildConfig.DEBUG) { catchException(); } + tPushInit(); // 设置开启日志,发布时请关闭日志 JPushInterface.setDebugMode(true); JPushInterface.requestPermission(this); String rootDir = MMKV.initialize(this); Log.i(TAG, "mmkv root: " + rootDir); + LogDBManager.init(this); + ConnectManager.init(this); Aria.init(this); Aria.download(this).resumeAllTask(); JGYUtils.init(this); @@ -125,6 +135,34 @@ public class BaseApplication extends Application { }); } + private void tPushInit() { + XGPushConfig.enableDebug(this, true); + XGPushManager.registerPush(this, new XGIOperateCallback() { + @Override + public void onSuccess(Object data, int flag) { + //token在设备卸载重装的时候有可能会变 + Log.e("TPush", "注册成功,设备token为:" + data); + List accountInfoList = new ArrayList<>(); + accountInfoList.add(new XGPushManager.AccountInfo(XGPushManager.AccountType.CUSTOM.getValue(), Utils.getSerial())); + XGPushManager.upsertAccounts(getAppContext(), accountInfoList, new XGIOperateCallback() { + @Override + public void onSuccess(Object data, int flag) { + Log.e("TPush", "onSuccess, data:" + data + ", flag:" + flag); + } + + @Override + public void onFail(Object data, int errCode, String msg) { + Log.e("TPush", "onFail, data:" + data + ", code:" + errCode + ", msg:" + msg); + } + }); + } + + @Override + public void onFail(Object data, int errCode, String msg) { + Log.e("TPush", "注册失败,错误码:" + errCode + ",错误信息:" + msg); + } + }); + } public void onAliasOperatorResult(JPushMessage jPushMessage) { if (jPushMessage == null) { @@ -149,7 +187,6 @@ public class BaseApplication extends Application { public static void setJpushTags() { Log.e(TAG, "30s后重新设置tags"); - HTTPInterface.setJpushTags(context); } private static OnAliasResult onAliasResult; diff --git a/app/src/main/java/com/uiui/sn/mvp/BasePresenter.java b/app/src/main/java/com/uiui/sn/base/BasePresenter.java similarity index 80% rename from app/src/main/java/com/uiui/sn/mvp/BasePresenter.java rename to app/src/main/java/com/uiui/sn/base/BasePresenter.java index b9cbddf..63468e5 100644 --- a/app/src/main/java/com/uiui/sn/mvp/BasePresenter.java +++ b/app/src/main/java/com/uiui/sn/base/BasePresenter.java @@ -1,4 +1,4 @@ -package com.uiui.sn.mvp; +package com.uiui.sn.base; public interface BasePresenter { void attachView(V view); diff --git a/app/src/main/java/com/uiui/sn/mvp/BaseView.java b/app/src/main/java/com/uiui/sn/base/BaseView.java similarity index 54% rename from app/src/main/java/com/uiui/sn/mvp/BaseView.java rename to app/src/main/java/com/uiui/sn/base/BaseView.java index 67ce675..80262c0 100644 --- a/app/src/main/java/com/uiui/sn/mvp/BaseView.java +++ b/app/src/main/java/com/uiui/sn/base/BaseView.java @@ -1,4 +1,4 @@ -package com.uiui.sn.mvp; +package com.uiui.sn.base; public interface BaseView { } diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/AppInfo.java b/app/src/main/java/com/uiui/sn/bean/AppInfo.java similarity index 99% rename from app/src/main/java/com/uiui/sn/bean/zuoye/AppInfo.java rename to app/src/main/java/com/uiui/sn/bean/AppInfo.java index b3bedf0..f75fb83 100644 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/AppInfo.java +++ b/app/src/main/java/com/uiui/sn/bean/AppInfo.java @@ -1,4 +1,4 @@ -package com.uiui.sn.bean.zuoye; +package com.uiui.sn.bean; import java.io.Serializable; diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/AppJump.java b/app/src/main/java/com/uiui/sn/bean/AppJump.java similarity index 95% rename from app/src/main/java/com/uiui/sn/bean/zuoye/AppJump.java rename to app/src/main/java/com/uiui/sn/bean/AppJump.java index b47d98c..c2e1e9c 100644 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/AppJump.java +++ b/app/src/main/java/com/uiui/sn/bean/AppJump.java @@ -1,4 +1,4 @@ -package com.uiui.sn.bean.zuoye; +package com.uiui.sn.bean; import androidx.annotation.NonNull; diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/AppStart.java b/app/src/main/java/com/uiui/sn/bean/AppStart.java similarity index 98% rename from app/src/main/java/com/uiui/sn/bean/zuoye/AppStart.java rename to app/src/main/java/com/uiui/sn/bean/AppStart.java index f4ee1bc..95c093c 100644 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/AppStart.java +++ b/app/src/main/java/com/uiui/sn/bean/AppStart.java @@ -1,4 +1,4 @@ -package com.uiui.sn.bean.zuoye; +package com.uiui.sn.bean; import java.io.Serializable; diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/AppUploadInfo.java b/app/src/main/java/com/uiui/sn/bean/AppUploadInfo.java similarity index 96% rename from app/src/main/java/com/uiui/sn/bean/zuoye/AppUploadInfo.java rename to app/src/main/java/com/uiui/sn/bean/AppUploadInfo.java index 6bd0956..1fc8b91 100644 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/AppUploadInfo.java +++ b/app/src/main/java/com/uiui/sn/bean/AppUploadInfo.java @@ -1,4 +1,4 @@ -package com.uiui.sn.bean.zuoye; +package com.uiui.sn.bean; import java.io.Serializable; diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/AppUsed.java b/app/src/main/java/com/uiui/sn/bean/AppUsed.java similarity index 95% rename from app/src/main/java/com/uiui/sn/bean/zuoye/AppUsed.java rename to app/src/main/java/com/uiui/sn/bean/AppUsed.java index 3fbddfc..6d129f0 100644 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/AppUsed.java +++ b/app/src/main/java/com/uiui/sn/bean/AppUsed.java @@ -1,4 +1,4 @@ -package com.uiui.sn.bean.zuoye; +package com.uiui.sn.bean; import java.io.Serializable; diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/BaseResponse.java b/app/src/main/java/com/uiui/sn/bean/BaseResponse.java similarity index 93% rename from app/src/main/java/com/uiui/sn/bean/zuoye/BaseResponse.java rename to app/src/main/java/com/uiui/sn/bean/BaseResponse.java index 3c76817..6944dac 100644 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/BaseResponse.java +++ b/app/src/main/java/com/uiui/sn/bean/BaseResponse.java @@ -1,4 +1,4 @@ -package com.uiui.sn.bean.zuoye; +package com.uiui.sn.bean; import androidx.annotation.NonNull; diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/Label.java b/app/src/main/java/com/uiui/sn/bean/Label.java similarity index 95% rename from app/src/main/java/com/uiui/sn/bean/zuoye/Label.java rename to app/src/main/java/com/uiui/sn/bean/Label.java index d8a002e..fbea318 100644 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/Label.java +++ b/app/src/main/java/com/uiui/sn/bean/Label.java @@ -1,4 +1,4 @@ -package com.uiui.sn.bean.zuoye; +package com.uiui.sn.bean; import java.io.Serializable; diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/LocalAppInfo.java b/app/src/main/java/com/uiui/sn/bean/LocalAppInfo.java similarity index 99% rename from app/src/main/java/com/uiui/sn/bean/zuoye/LocalAppInfo.java rename to app/src/main/java/com/uiui/sn/bean/LocalAppInfo.java index 37a30db..4392512 100644 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/LocalAppInfo.java +++ b/app/src/main/java/com/uiui/sn/bean/LocalAppInfo.java @@ -1,4 +1,4 @@ -package com.uiui.sn.bean.zuoye; +package com.uiui.sn.bean; import android.graphics.drawable.Drawable; diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/Response.java b/app/src/main/java/com/uiui/sn/bean/Response.java similarity index 86% rename from app/src/main/java/com/uiui/sn/bean/zuoye/Response.java rename to app/src/main/java/com/uiui/sn/bean/Response.java index afb8a27..321c97d 100644 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/Response.java +++ b/app/src/main/java/com/uiui/sn/bean/Response.java @@ -1,4 +1,4 @@ -package com.uiui.sn.bean.zuoye; +package com.uiui.sn.bean; import java.io.Serializable; diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/SNUidBean.java b/app/src/main/java/com/uiui/sn/bean/SNUidBean.java similarity index 97% rename from app/src/main/java/com/uiui/sn/bean/zuoye/SNUidBean.java rename to app/src/main/java/com/uiui/sn/bean/SNUidBean.java index cbeaa49..aa67a7d 100644 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/SNUidBean.java +++ b/app/src/main/java/com/uiui/sn/bean/SNUidBean.java @@ -1,4 +1,4 @@ -package com.uiui.sn.bean.zuoye; +package com.uiui.sn.bean; import java.io.Serializable; diff --git a/app/src/main/java/com/uiui/sn/bean/SnInfo.java b/app/src/main/java/com/uiui/sn/bean/SnInfo.java new file mode 100644 index 0000000..119f95e --- /dev/null +++ b/app/src/main/java/com/uiui/sn/bean/SnInfo.java @@ -0,0 +1,163 @@ +package com.uiui.sn.bean; + +import androidx.annotation.NonNull; + +import com.google.gson.Gson; +import com.google.gson.JsonParser; + +import java.io.Serializable; + +public class SnInfo implements Serializable { + private static final long serialVersionUID = -5268233433601073239L; + + int id; + String sn_value; + int is_log; + int is_log_type; + int sex; + int age; + String height; + String weight; + String devices_version; + String sn_name; + String school; + String is_lock; + String is_reset; + String name; + int admin_id; + String grade; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getSn_value() { + return sn_value; + } + + public void setSn_value(String sn_value) { + this.sn_value = sn_value; + } + + public int getIs_log() { + return is_log; + } + + public void setIs_log(int is_log) { + this.is_log = is_log; + } + + public int getIs_log_type() { + return is_log_type; + } + + public void setIs_log_type(int is_log_type) { + this.is_log_type = is_log_type; + } + + public int getSex() { + return sex; + } + + public void setSex(int sex) { + this.sex = sex; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getHeight() { + return height; + } + + public void setHeight(String height) { + this.height = height; + } + + public String getWeight() { + return weight; + } + + public void setWeight(String weight) { + this.weight = weight; + } + + public String getDevices_version() { + return devices_version; + } + + public void setDevices_version(String devices_version) { + this.devices_version = devices_version; + } + + public String getSn_name() { + return sn_name; + } + + public void setSn_name(String sn_name) { + this.sn_name = sn_name; + } + + public String getSchool() { + return school; + } + + public void setSchool(String school) { + this.school = school; + } + + public String getIs_lock() { + return is_lock; + } + + public void setIs_lock(String is_lock) { + this.is_lock = is_lock; + } + + public String getIs_reset() { + return is_reset; + } + + public void setIs_reset(String is_reset) { + this.is_reset = is_reset; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAdmin_id() { + return admin_id; + } + + public void setAdmin_id(int admin_id) { + this.admin_id = admin_id; + } + + public String getGrade() { + return grade; + } + + public void setGrade(String grade) { + this.grade = grade; + } + + @NonNull + @Override + public String toString() { + return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString(); + } +} diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/SystemSettings.java b/app/src/main/java/com/uiui/sn/bean/SystemSettings.java similarity index 99% rename from app/src/main/java/com/uiui/sn/bean/zuoye/SystemSettings.java rename to app/src/main/java/com/uiui/sn/bean/SystemSettings.java index ebcd8a2..78e585f 100644 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/SystemSettings.java +++ b/app/src/main/java/com/uiui/sn/bean/SystemSettings.java @@ -1,4 +1,4 @@ -package com.uiui.sn.bean.zuoye; +package com.uiui.sn.bean; import com.google.gson.Gson; diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/UserAvatarInfo.java b/app/src/main/java/com/uiui/sn/bean/UserAvatarInfo.java similarity index 96% rename from app/src/main/java/com/uiui/sn/bean/zuoye/UserAvatarInfo.java rename to app/src/main/java/com/uiui/sn/bean/UserAvatarInfo.java index 9b251b7..ed520bc 100644 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/UserAvatarInfo.java +++ b/app/src/main/java/com/uiui/sn/bean/UserAvatarInfo.java @@ -1,4 +1,4 @@ -package com.uiui.sn.bean.zuoye; +package com.uiui.sn.bean; import java.io.Serializable; diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/browser/BrowserApiData.java b/app/src/main/java/com/uiui/sn/bean/browser/BrowserApiData.java similarity index 94% rename from app/src/main/java/com/uiui/sn/bean/zuoye/browser/BrowserApiData.java rename to app/src/main/java/com/uiui/sn/bean/browser/BrowserApiData.java index abe8f82..21f0f13 100644 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/browser/BrowserApiData.java +++ b/app/src/main/java/com/uiui/sn/bean/browser/BrowserApiData.java @@ -1,4 +1,4 @@ -package com.uiui.sn.bean.zuoye.browser; +package com.uiui.sn.bean.browser; import com.google.gson.annotations.SerializedName; diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/browser/BrowserBean.java b/app/src/main/java/com/uiui/sn/bean/browser/BrowserBean.java similarity index 94% rename from app/src/main/java/com/uiui/sn/bean/zuoye/browser/BrowserBean.java rename to app/src/main/java/com/uiui/sn/bean/browser/BrowserBean.java index 9eef94d..390a402 100644 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/browser/BrowserBean.java +++ b/app/src/main/java/com/uiui/sn/bean/browser/BrowserBean.java @@ -1,4 +1,4 @@ -package com.uiui.sn.bean.zuoye.browser; +package com.uiui.sn.bean.browser; import androidx.annotation.NonNull; diff --git a/app/src/main/java/com/uiui/sn/bean/gankao/ActiveUser.java b/app/src/main/java/com/uiui/sn/bean/gankao/ActiveUser.java deleted file mode 100644 index 1327fd8..0000000 --- a/app/src/main/java/com/uiui/sn/bean/gankao/ActiveUser.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.uiui.sn.bean.gankao; - -import java.io.Serializable; - -public class ActiveUser implements Serializable { -} diff --git a/app/src/main/java/com/uiui/sn/bean/gankao/AvailableProduct.java b/app/src/main/java/com/uiui/sn/bean/gankao/AvailableProduct.java deleted file mode 100644 index eeb4e41..0000000 --- a/app/src/main/java/com/uiui/sn/bean/gankao/AvailableProduct.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.uiui.sn.bean.gankao; - -import java.io.Serializable; - -public class AvailableProduct implements Serializable { - private static final long serialVersionUID = -4302961917717416837L; - - String productname; - String product_id; - String specification_id; - String duration; - String register_autobind; - String max_apply_preuser; - String product_id_onweb; - String month; - - public String getProductname() { - return productname; - } - - public void setProductname(String productname) { - this.productname = productname; - } - - public String getProduct_id() { - return product_id; - } - - public void setProduct_id(String product_id) { - this.product_id = product_id; - } - - public String getSpecification_id() { - return specification_id; - } - - public void setSpecification_id(String specification_id) { - this.specification_id = specification_id; - } - - public String getDuration() { - return duration; - } - - public void setDuration(String duration) { - this.duration = duration; - } - - public String getRegister_autobind() { - return register_autobind; - } - - public void setRegister_autobind(String register_autobind) { - this.register_autobind = register_autobind; - } - - public String getMax_apply_preuser() { - return max_apply_preuser; - } - - public void setMax_apply_preuser(String max_apply_preuser) { - this.max_apply_preuser = max_apply_preuser; - } - - public String getProduct_id_onweb() { - return product_id_onweb; - } - - public void setProduct_id_onweb(String product_id_onweb) { - this.product_id_onweb = product_id_onweb; - } - - public String getMonth() { - return month; - } - - public void setMonth(String month) { - this.month = month; - } -} diff --git a/app/src/main/java/com/uiui/sn/bean/gankao/CancelUserPower.java b/app/src/main/java/com/uiui/sn/bean/gankao/CancelUserPower.java deleted file mode 100644 index 98020c3..0000000 --- a/app/src/main/java/com/uiui/sn/bean/gankao/CancelUserPower.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.uiui.sn.bean.gankao; - -import java.io.Serializable; - -public class CancelUserPower implements Serializable { - private static final long serialVersionUID = 6582192006004247173L; - - boolean success; - String user_power_id; - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public String getUser_power_id() { - return user_power_id; - } - - public void setUser_power_id(String user_power_id) { - this.user_power_id = user_power_id; - } -} diff --git a/app/src/main/java/com/uiui/sn/bean/gankao/CreateUserBean.java b/app/src/main/java/com/uiui/sn/bean/gankao/CreateUserBean.java deleted file mode 100644 index f777fbf..0000000 --- a/app/src/main/java/com/uiui/sn/bean/gankao/CreateUserBean.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.uiui.sn.bean.gankao; - -import java.io.Serializable; - -public class CreateUserBean implements Serializable { - private static final long serialVersionUID = -7317008486626554260L; - - public String gankaoPartnerUID; - public int gankaoUID; - public int isNew; - public String mobile; - public String gankaoUserRegAt; - - public String getGankaoPartnerUID() { - return gankaoPartnerUID; - } - - public void setGankaoPartnerUID(String gankaoPartnerUID) { - this.gankaoPartnerUID = gankaoPartnerUID; - } - - public int getGankaoUID() { - return gankaoUID; - } - - public void setGankaoUID(int gankaoUID) { - this.gankaoUID = gankaoUID; - } - - public int getIsNew() { - return isNew; - } - - public void setIsNew(int isNew) { - this.isNew = isNew; - } - - public String getMobile() { - return mobile; - } - - public void setMobile(String mobile) { - this.mobile = mobile; - } - - public String getGankaoUserRegAt() { - return gankaoUserRegAt; - } - - public void setGankaoUserRegAt(String gankaoUserRegAt) { - this.gankaoUserRegAt = gankaoUserRegAt; - } -} diff --git a/app/src/main/java/com/uiui/sn/bean/gankao/GankaoBaseResponse.java b/app/src/main/java/com/uiui/sn/bean/gankao/GankaoBaseResponse.java deleted file mode 100644 index 910135b..0000000 --- a/app/src/main/java/com/uiui/sn/bean/gankao/GankaoBaseResponse.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.uiui.sn.bean.gankao; - -import androidx.annotation.NonNull; - -import com.google.gson.Gson; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; - -import java.io.Serializable; - -public class GankaoBaseResponse implements Serializable { - private static final long serialVersionUID = -2581656663382362871L; - - public int code; - public int status; - public String msg; - public long serverTime; - public String tokenOK; - public T data; - - @NonNull - @Override - public String toString() { - Gson gson = new Gson(); - JsonObject jsonObject = JsonParser.parseString(gson.toJson(this)).getAsJsonObject(); - return jsonObject.toString(); - } -} diff --git a/app/src/main/java/com/uiui/sn/bean/gankao/PowerUser.java b/app/src/main/java/com/uiui/sn/bean/gankao/PowerUser.java deleted file mode 100644 index 74ca3e8..0000000 --- a/app/src/main/java/com/uiui/sn/bean/gankao/PowerUser.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.uiui.sn.bean.gankao; - -import com.google.gson.annotations.SerializedName; - -import java.io.Serializable; - -public class PowerUser implements Serializable { - private static final long serialVersionUID = -6368881020242541651L; - @SerializedName("合作方用户id") - private String userID; - @SerializedName("赶考内部PUID") - private int pUID; - @SerializedName("赶考UID") - private int gankaoUID; - @SerializedName("姓名") - private String name; - @SerializedName("年级") - private int grade; - @SerializedName("身份") - private String identity; - @SerializedName("授权记录编号") - private int authorizationNumber; - @SerializedName("授权日期") - private String authorizationDate; - @SerializedName("权限规格ID") - private int authorityID; - @SerializedName("权限名称") - private String authorityName; - @SerializedName("回款价") - private float returnPrice; - @SerializedName("有效期") - private String validPeriod; - - public String getUserID() { - return userID; - } - - public void setUserID(String userID) { - this.userID = userID; - } - - public int getpUID() { - return pUID; - } - - public void setpUID(int pUID) { - this.pUID = pUID; - } - - public int getGankaoUID() { - return gankaoUID; - } - - public void setGankaoUID(int gankaoUID) { - this.gankaoUID = gankaoUID; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getGrade() { - return grade; - } - - public void setGrade(int grade) { - this.grade = grade; - } - - public String getIdentity() { - return identity; - } - - public void setIdentity(String identity) { - this.identity = identity; - } - - public int getAuthorizationNumber() { - return authorizationNumber; - } - - public void setAuthorizationNumber(int authorizationNumber) { - this.authorizationNumber = authorizationNumber; - } - - public String getAuthorizationDate() { - return authorizationDate; - } - - public void setAuthorizationDate(String authorizationDate) { - this.authorizationDate = authorizationDate; - } - - public int getAuthorityID() { - return authorityID; - } - - public void setAuthorityID(int authorityID) { - this.authorityID = authorityID; - } - - public String getAuthorityName() { - return authorityName; - } - - public void setAuthorityName(String authorityName) { - this.authorityName = authorityName; - } - - public float getReturnPrice() { - return returnPrice; - } - - public void setReturnPrice(float returnPrice) { - this.returnPrice = returnPrice; - } - - public String getValidPeriod() { - return validPeriod; - } - - public void setValidPeriod(String validPeriod) { - this.validPeriod = validPeriod; - } -} diff --git a/app/src/main/java/com/uiui/sn/bean/gankao/UserProduct.java b/app/src/main/java/com/uiui/sn/bean/gankao/UserProduct.java deleted file mode 100644 index b050965..0000000 --- a/app/src/main/java/com/uiui/sn/bean/gankao/UserProduct.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.uiui.sn.bean.gankao; - -import androidx.annotation.NonNull; - -import com.google.gson.Gson; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; - -import java.io.Serializable; - -public class UserProduct implements Serializable { - private static final long serialVersionUID = 7962643432696702587L; - - String id; - String user_id; - String name; - boolean isgroup; - String product_id; - String user_power_id; - String specification_id; - String register_autobind; - float upgradable; - String upgradablehint; - String expired_time; - String created_at; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getUser_id() { - return user_id; - } - - public void setUser_id(String user_id) { - this.user_id = user_id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public boolean isIsgroup() { - return isgroup; - } - - public void setIsgroup(boolean isgroup) { - this.isgroup = isgroup; - } - - public String getProduct_id() { - return product_id; - } - - public void setProduct_id(String product_id) { - this.product_id = product_id; - } - - public String getUser_power_id() { - return user_power_id; - } - - public void setUser_power_id(String user_power_id) { - this.user_power_id = user_power_id; - } - - public String getSpecification_id() { - return specification_id; - } - - public void setSpecification_id(String specification_id) { - this.specification_id = specification_id; - } - - public String getRegister_autobind() { - return register_autobind; - } - - public void setRegister_autobind(String register_autobind) { - this.register_autobind = register_autobind; - } - - public float getUpgradable() { - return upgradable; - } - - public void setUpgradable(float upgradable) { - this.upgradable = upgradable; - } - - public String getUpgradablehint() { - return upgradablehint; - } - - public void setUpgradablehint(String upgradablehint) { - this.upgradablehint = upgradablehint; - } - - public String getExpired_time() { - return expired_time; - } - - public void setExpired_time(String expired_time) { - this.expired_time = expired_time; - } - - public String getCreated_at() { - return created_at; - } - - public void setCreated_at(String created_at) { - this.created_at = created_at; - } - - @NonNull - @Override - public String toString() { - Gson gson = new Gson(); - JsonObject jsonObject = JsonParser.parseString(gson.toJson(this)).getAsJsonObject(); - return jsonObject.toString(); - } -} diff --git a/app/src/main/java/com/uiui/sn/bean/gankao/UserProductCards.java b/app/src/main/java/com/uiui/sn/bean/gankao/UserProductCards.java deleted file mode 100644 index 0197376..0000000 --- a/app/src/main/java/com/uiui/sn/bean/gankao/UserProductCards.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.uiui.sn.bean.gankao; - -import java.io.Serializable; - -public class UserProductCards implements Serializable { - private static final long serialVersionUID = 2956193416718626851L; - - T cards; - - public T getCards() { - return cards; - } - - public void setCards(T cards) { - this.cards = cards; - } -} diff --git a/app/src/main/java/com/uiui/sn/bean/zuoye/UserInfo.java b/app/src/main/java/com/uiui/sn/bean/zuoye/UserInfo.java deleted file mode 100644 index f151e84..0000000 --- a/app/src/main/java/com/uiui/sn/bean/zuoye/UserInfo.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.uiui.sn.bean.zuoye; - -import androidx.annotation.NonNull; - -import com.google.gson.Gson; -import com.google.gson.JsonParser; - -import java.io.Serializable; - -public class UserInfo implements Serializable { - - private static final long serialVersionUID = -5268233433601073239L; - - private int id; - private String sn_value; - private String sn_name; - private String sn_phone; - private String grade; - private String sn_app; - private String sn_area; - private int admin_id; - private String is_delete; - private String is_reset; - private String is_lock; - private String school; - private String createtime; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getSn_value() { - return sn_value; - } - - public void setSn_value(String sn_value) { - this.sn_value = sn_value; - } - - public String getSn_name() { - return sn_name; - } - - public void setSn_name(String sn_name) { - this.sn_name = sn_name; - } - - public String getSn_phone() { - return sn_phone; - } - - public void setSn_phone(String sn_phone) { - this.sn_phone = sn_phone; - } - - public String getGrade() { - return grade; - } - - public void setGrade(String grade) { - this.grade = grade; - } - - public String getSn_app() { - return sn_app; - } - - public void setSn_app(String sn_app) { - this.sn_app = sn_app; - } - - public String getSn_area() { - return sn_area; - } - - public void setSn_area(String sn_area) { - this.sn_area = sn_area; - } - - public int getMember_id() { - return admin_id; - } - - public void setMember_id(int admin_id) { - this.admin_id = admin_id; - } - - public String getIs_delete() { - return is_delete; - } - - public void setIs_delete(String is_delete) { - this.is_delete = is_delete; - } - - public String getIs_reset() { - return is_reset; - } - - public void setIs_reset(String is_reset) { - this.is_reset = is_reset; - } - - public String getIs_lock() { - return is_lock; - } - - public void setIs_lock(String is_lock) { - this.is_lock = is_lock; - } - - public String getCreatetime() { - return createtime; - } - - public void setCreatetime(String createtime) { - this.createtime = createtime; - } - - public String getSchool() { - return school; - } - - public void setSchool(String school) { - this.school = school; - } - - @NonNull - @Override - public String toString() { - return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString(); - } -} diff --git a/app/src/main/java/com/uiui/sn/config/Configs.java b/app/src/main/java/com/uiui/sn/config/CommonConfig.java similarity index 57% rename from app/src/main/java/com/uiui/sn/config/Configs.java rename to app/src/main/java/com/uiui/sn/config/CommonConfig.java index dcb6633..07c84a2 100644 --- a/app/src/main/java/com/uiui/sn/config/Configs.java +++ b/app/src/main/java/com/uiui/sn/config/CommonConfig.java @@ -1,6 +1,16 @@ package com.uiui.sn.config; -public class Configs { +public class CommonConfig { + /*保存的应用版本号*/ + public final static String SN_VERSIONCODE = "SN_VERSIONCODE"; + /*首次连接*/ + public final static String JGY_FIRST_CONNECT = "first_connect"; + /*后台的白名单*/ + public final static String ONLY_SHORTCUT_LIST = "only_jgy_shortcut_list"; + /*底层白名单*/ + public final static String QCH_APP_FORBID = "qch_app_forbid"; + + public static String isLogined = "isLogined"; public static String AES_KEY = "0123456789ABCDEF"; public static String HTTP_KEY = "YTM3YTAxNTJmMmZmNzkyM2E2YzIwZjlhZTc0NzNmMGI="; diff --git a/app/src/main/java/com/uiui/sn/config/CommonData.java b/app/src/main/java/com/uiui/sn/config/CommonData.java deleted file mode 100644 index 79411db..0000000 --- a/app/src/main/java/com/uiui/sn/config/CommonData.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.uiui.sn.config; - - - -public class CommonData { - - public static final String MAJOR_ACTION = "MAJOR_ACTION"; - public static final String FLAG_FIRST_ENTER = "first_enter"; - public static final String SP_USER_ID = "user_ID"; - public static final String SP_USER_PHONE = "user_phone"; - public static final String SP_USER_NAME = "user_name"; - public static final String SP_USER_IDCARD = "user_idcard"; - public static final String SP_USER_PASSWORD = "user_pass"; - public static final String SP_RECOMMEND_PHONE = "recommend_phone"; - public static final String SP_RECOMMEND_NAME = "sup_name"; - public static final String SP_USER_LEVEL = "user_level"; - public static final String SP_ISLOGINED = "user_islogined"; - - - public static final String NEXT_PAGE = "next_page"; - - public static final String BANK_NAME = "bank_name"; - public static final String OPERATOR_NAME = "bank_name"; - - public static final String PRODUCT_LINK = "product_link"; - public static final String PRODUCT_NAME = "product_name"; - -} diff --git a/app/src/main/java/com/uiui/sn/config/Scheme.java b/app/src/main/java/com/uiui/sn/config/Scheme.java deleted file mode 100644 index b7beff0..0000000 --- a/app/src/main/java/com/uiui/sn/config/Scheme.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.uiui.sn.config; - -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.net.Uri; -import android.text.TextUtils; -import android.util.Log; - - -import com.uiui.sn.utils.CXAESUtil; -import com.uiui.sn.utils.Hash; -import com.uiui.sn.utils.Utils; - -import java.io.UnsupportedEncodingException; - -public class Scheme { - private static String TAG = Scheme.class.getSimpleName(); - - //激活 - public static final String Login = "gankao://loginFromPartner"; - //个人中心scheme地址 - public static final String ownCenter = "gankao://ownCenter"; - //app_id 渠道号 partnerID 都是这个 - public static final String partner_id = "colorful"; - //加密的 - public static final String key = "845a5d93669264baddc109a98493d8f930f641e65f4a7b8864aa934b3b98ccc9c24ba8454b0271576d7867aa623d30bd"; - //AI - public static final String AIzhijianshidu = "gankao://dotRead"; - public static final String AIzhijiancidian = "gankao://dotReadWords"; - public static final String Yingweizuowenpigai = ""; - public static final String Zhijianjuzifanyi = "gankao://dotReadSentences"; - public static final String AIkousuanpigai = ""; - public static final String Paozhaosouti = "gankao://photoSearch"; - public static final String Yuwenzuowenpigai = ""; - - //系统测 - public static final String YueduAI = "gankao://web?https://daoxue.gankao.com/evaluation"; - public static final String Kouyupingce = "gankao://capabilityAssessment"; - public static final String Yuedunenglice = "gankao://capabilityAssessment"; - - //同步课程 - public static final String Tongbukecheng = "gankao://courseList"; - public static final String Zhishidian = "gankao://knowlegeCourse"; - public static final String Zhuantikecheng = "gankao://zhuanTiCourse"; - public static final String Quweikecheng = "gankao://interestLessons"; - public static final String Tongbutingxie = "gankao://aiTingxie"; - public static final String Tongbushufa = "gankao://bishunCalligraphy"; - public static final String Tongbukousuan = "gankao://aiKousuan"; - public static final String Tongbulangdu = "gankao://courseRead"; - - //针对练 - public static final String Zaixianzuoti = "gankao://questionBankCenter"; - public static final String Mingxiaoshijuan = "gankao://schoolExamPaper"; - public static final String Banjizuoye = "gankao://classHomework"; - public static final String Jiucuoben = "gankao://wrongTitle"; - - //AI升学 - public static final String Youshengxiao = "gankao://web?https://lubo.gankao.com/tag/guoxue"; - public static final String Xiaoshengchu = "gankao://web?https://lubo.gankao.com/tag/xscxj"; - public static final String Aoshujingjiang = "gankao://aoshujingjiang"; - - //扩展 - public static final String Guoxue = "gankao://web?https://lubo.gankao.com/guoxue"; - public static final String Gushici = "gankao://ancientPoetry"; - public static final String Jiaoyu = "gankao://homeEducation"; - public static final String Zuowen = "gankao://selectCompositions"; - public static final String Mingzhu = "gankao://kewaiMingzhu"; - public static final String FM = "gankao://chengzhangying"; - public static final String Huyi = ""; - - - public static void openScheme(Activity context, String uri) { - if (TextUtils.isEmpty(uri)) { - return; - } - Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); - try { - context.startActivity(intent); - } catch (Exception e) { - Log.e(TAG, "openScheme: " + e.getMessage()); - } - } - - public static String getPublicSecret() { - try { - return CXAESUtil.decrypt(CXAESUtil.HEX, key); - } catch (Exception e) { - e.printStackTrace(); - return ""; - } - } - - public static String getSign(Context context) { - String device_id = Utils.getAndroid7MAC(); - String sign = "partner_id=" + partner_id + - "&" + "device_id=" + Uri.encode(device_id, "utf-8") + - "&" + "macaddr=" + Uri.encode(Utils.getAndroid10MAC(context), "utf-8") - + Uri.encode(getPublicSecret(), "utf-8"); - Log.e(TAG, "getLogin: " + sign); - return Hash.md5(sign); - } - - public static String getLogin(Context context) throws UnsupportedEncodingException { - String device_id = Utils.getAndroid7MAC(); - String login = Login + "?" + - "partner_id=" + partner_id + - "&" + "device_id=" + Uri.encode(device_id, "utf-8") + - "&" + "macaddr=" + Uri.encode(Utils.getAndroid10MAC(context), "utf-8") + - "&" + "sign=" + getSign(context); - Log.e(TAG, "getLogin: " + login); - return login; - } -} diff --git a/app/src/main/java/com/uiui/sn/fragment/AppletQRCodeFragment.java b/app/src/main/java/com/uiui/sn/fragment/AppletQRCodeFragment.java index 63dea19..701231d 100644 --- a/app/src/main/java/com/uiui/sn/fragment/AppletQRCodeFragment.java +++ b/app/src/main/java/com/uiui/sn/fragment/AppletQRCodeFragment.java @@ -15,11 +15,11 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.bumptech.glide.Glide; import com.uiui.sn.R; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.manager.NetInterfaceManager; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.network.NetInterfaceManager; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; /** diff --git a/app/src/main/java/com/uiui/sn/fragment/QRCodeFragment.java b/app/src/main/java/com/uiui/sn/fragment/QRCodeFragment.java index 820a91c..854ad9f 100644 --- a/app/src/main/java/com/uiui/sn/fragment/QRCodeFragment.java +++ b/app/src/main/java/com/uiui/sn/fragment/QRCodeFragment.java @@ -12,7 +12,7 @@ import android.view.ViewGroup; import android.widget.ImageView; import com.uiui.sn.R; -import com.uiui.sn.config.Configs; +import com.uiui.sn.config.CommonConfig; import com.uiui.sn.utils.CXAESUtil; import com.uiui.sn.utils.Utils; @@ -70,7 +70,7 @@ public class QRCodeFragment extends Fragment { mView = inflater.inflate(R.layout.fragment_qrcode, container, false); qr_code =mView.findViewById(R.id.qr_code); try { - String encryptString = CXAESUtil.encrypt(Configs.AES_KEY, Utils.getSerial()); + String encryptString = CXAESUtil.encrypt(CommonConfig.AES_KEY, Utils.getSerial()); Bitmap bitmap = Utils.createQRImage(encryptString, 300, 300); qr_code.setImageBitmap(bitmap); } catch (Exception e) { diff --git a/app/src/main/java/com/uiui/sn/manager/AmapManager.java b/app/src/main/java/com/uiui/sn/manager/AmapManager.java index 76acb3e..d27849f 100644 --- a/app/src/main/java/com/uiui/sn/manager/AmapManager.java +++ b/app/src/main/java/com/uiui/sn/manager/AmapManager.java @@ -76,6 +76,7 @@ public class AmapManager { SPUtils.put(mContext, "AmapAddress", aMapLocation.getAddress()); SPUtils.put(mContext, "longitude", aMapLocation.getLongitude()); SPUtils.put(mContext, "latitude", aMapLocation.getLatitude()); + SPUtils.put(mContext, "AmapError", ""); } else { //定位失败 sb.append("定位失败" + "\n"); diff --git a/app/src/main/java/com/uiui/sn/manager/ConnectManager.java b/app/src/main/java/com/uiui/sn/manager/ConnectManager.java new file mode 100644 index 0000000..419be29 --- /dev/null +++ b/app/src/main/java/com/uiui/sn/manager/ConnectManager.java @@ -0,0 +1,81 @@ +package com.uiui.sn.manager; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; + +import com.tencent.mmkv.MMKV; +import com.uiui.sn.utils.TimeUtils; + +public class ConnectManager { + private static final String TAG = ConnectManager.class.getSimpleName(); + + /*重启后连接成功的时间*/ + public static final String REBOOT_LAST_ONNECT_TIME = "reboot_last_connect_time"; + /*WiFi连接后连接成功的时间*/ + public static final String WIFI_LAST_CONNECT_TIME = "WiFi_last_connect_time"; + /*打开设备信息连接成功的时间*/ + public static final String OPENINFO_LAST_ONNECT_TIME = "opneinfo_last_connect_time"; + + + @SuppressLint("StaticFieldLeak") + private static ConnectManager sInstance; + private Context mContext; + private MMKV mMMKV = MMKV.defaultMMKV(); + + private ConnectManager(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } + this.mContext = context; + + } + + public static void init(Context context) { + if (sInstance == null) { + Log.e(TAG, "init: "); + sInstance = new ConnectManager(context); + } + } + + public static ConnectManager getInstance() { + if (sInstance == null) { + throw new IllegalStateException("You must be init ConnectManager first"); + } + return sInstance; + } + + + /** + * @return 今天重启后是否连接 + */ + public boolean isRebootFistConnect() { + long time = mMMKV.decodeLong(REBOOT_LAST_ONNECT_TIME, 0); + return !TimeUtils.isTodayTime(time); + } + + /** + * @return 今天WiFi连接是否有连接 + */ + public boolean isWiFiFistConnect() { + long time = mMMKV.decodeLong(WIFI_LAST_CONNECT_TIME, 0); + return !TimeUtils.isTodayTime(time); + } + + /** + * @return 今天打开设备信息后是否连接 + */ + public boolean isOpenInfoFistConnect() { + long time = mMMKV.decodeLong(OPENINFO_LAST_ONNECT_TIME, 0); + return !TimeUtils.isTodayTime(time); + } + + /** + * @param WiFiAlias + * @return 今天切换WiFi后是否连接 + */ + public boolean isWiFiCutoverFistConnect(String WiFiAlias) { + long time = mMMKV.decodeLong(WiFiAlias, 0); + return !TimeUtils.isTodayTime(time); + } +} diff --git a/app/src/main/java/com/uiui/sn/manager/ControlManager.java b/app/src/main/java/com/uiui/sn/manager/ControlManager.java index df34d0a..ba1bf3c 100644 --- a/app/src/main/java/com/uiui/sn/manager/ControlManager.java +++ b/app/src/main/java/com/uiui/sn/manager/ControlManager.java @@ -12,7 +12,7 @@ import android.util.Log; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.uiui.sn.bean.zuoye.SystemSettings; +import com.uiui.sn.bean.SystemSettings; import com.uiui.sn.utils.ApkUtils; import com.uiui.sn.utils.JGYUtils; import com.uiui.sn.utils.SPUtils; diff --git a/app/src/main/java/com/uiui/sn/manager/NetInterfaceManager.java b/app/src/main/java/com/uiui/sn/manager/NetInterfaceManager.java deleted file mode 100644 index 8763766..0000000 --- a/app/src/main/java/com/uiui/sn/manager/NetInterfaceManager.java +++ /dev/null @@ -1,386 +0,0 @@ -package com.uiui.sn.manager; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.util.Log; - -import com.uiui.sn.bean.zuoye.AppInfo; -import com.uiui.sn.bean.zuoye.AppStart; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.bean.zuoye.Label; -import com.uiui.sn.bean.zuoye.UserAvatarInfo; -import com.uiui.sn.bean.zuoye.UserInfo; -import com.uiui.sn.bean.zuoye.browser.BrowserApiData; -import com.uiui.sn.network.UrlAddress; -import com.uiui.sn.network.api.APPJump; -import com.uiui.sn.network.api.AddAppInstall; -import com.uiui.sn.network.api.AppUsedApi; -import com.uiui.sn.network.api.BindDevices; -import com.uiui.sn.network.api.Browser; -import com.uiui.sn.network.api.BrowserLabel; -import com.uiui.sn.network.api.ForceInstall; -import com.uiui.sn.network.api.GetBatchApi; -import com.uiui.sn.network.api.GetControlScreenshotApi; -import com.uiui.sn.network.api.GetGuideApi; -import com.uiui.sn.network.api.GetSnUidApi; -import com.uiui.sn.network.api.NewestAppUpdate; -import com.uiui.sn.network.api.QRCodeApi; -import com.uiui.sn.network.api.QueryAllApp; -import com.uiui.sn.network.api.QueryAppInside; -import com.uiui.sn.network.api.QuerySnAppStart; -import com.uiui.sn.network.api.RunningApp; -import com.uiui.sn.network.api.SNInfoApi; -import com.uiui.sn.network.api.SaveSnUidApi; -import com.uiui.sn.network.api.ScreenLock; -import com.uiui.sn.network.api.ScreenState; -import com.uiui.sn.network.api.Setting; -import com.uiui.sn.network.api.TimeControl; -import com.uiui.sn.network.api.UpdateAdminSn; -import com.uiui.sn.network.api.UploadScreenshot; -import com.uiui.sn.network.api.UserInfoControl; -import com.uiui.sn.utils.MD5Util; -import com.uiui.sn.utils.Utils; - -import org.jetbrains.annotations.NotNull; - -import java.io.File; -import java.io.IOException; -import java.util.List; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; - -import io.reactivex.Observable; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; -import okhttp3.Cache; -import okhttp3.Interceptor; -import okhttp3.OkHttpClient; -import okhttp3.Protocol; -import okhttp3.Request; -import okhttp3.Response; -import retrofit2.Retrofit; -import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; -import retrofit2.converter.gson.GsonConverterFactory; - -public class NetInterfaceManager { - @SuppressLint("StaticFieldLeak") - private static NetInterfaceManager INSTANCE; - private Context mContext; - private Retrofit mRetrofit; - private OkHttpClient okHttpClient; -// private Retrofit mGankaoRetrofit; - private final ConcurrentHashMap requestIdsMap = new ConcurrentHashMap<>(); - - //超时时间 - private static int timeOut = 5; - // 缓存文件最大限制大小20M - private static long cacheSize = 1024 * 1024 * 64; - public static final String CUSTOM_REPEAT_REQ_PROTOCOL = "MY_CUSTOM_REPEAT_REQ_PROTOCOL"; - - private NetInterfaceManager(Context context) { - mContext = context; - - if (null == mRetrofit) { - if (okHttpClient == null) { - Interceptor myHttpInterceptor = new Interceptor() { - @NotNull - @Override - public Response intercept(@NotNull Chain chain) throws IOException { - Request request = chain.request(); - String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString()); - Response response = chain.proceed(request); //准备返回Response - synchronized (requestIdsMap) { - requestIdsMap.remove(requestKey); //在这里移除正常的请求登记 - Log.e("REPEAT-REQUEST", "移除请求2:" + requestKey + " --- " + Thread.currentThread().getName() + " URL = " + request.url()); - } - return response; - } - }; - Interceptor mRequestInterceptor = new Interceptor() { - @NotNull - @Override - public Response intercept(@NotNull Chain chain) throws IOException { - Request request = chain.request(); - //拦截处理重复的HTTP 请求,类似 防止快速点击按钮去重 可以不去处理了,全局统一处理 - String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString()); - synchronized (requestIdsMap) { - if (requestIdsMap.get(requestKey) == null) { -// Log.e("REPEAT-REQUEST", "intercept: " + requestIdsMap); - requestIdsMap.put(requestKey, System.currentTimeMillis()); - Log.e("REPEAT-REQUEST", "注册请求:" + requestKey + " --- " + Thread.currentThread().getName() + " URL = " + request.url()); - } else { - //如果是重复的请求,抛出一个自定义的错误,这个错误大家根据自己的业务定义吧 - Log.e("REPEAT-REQUEST", "重复请求:" + requestKey + " --- " + Thread.currentThread().getName() + " URL = " + request.url()); - return new Response.Builder() - .protocol(Protocol.get(CUSTOM_REPEAT_REQ_PROTOCOL)) - .request(request) //multi thread - .build(); - } - } - Response originalResponse = chain.proceed(request); - return originalResponse.newBuilder().build(); - } - }; - Interceptor interceptor = new Interceptor() { - @NotNull - @Override - public Response intercept(@NotNull Chain chain) throws IOException { - Request request = chain.request(); - //相同的请求 - String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString()); - long time = System.currentTimeMillis();//请求时间 - try { - if (requestIdsMap.size() > 0 && requestIdsMap.containsKey(requestKey)) { - Log.e("REPEAT-REQUEST", "重复请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url()); - chain.call().cancel(); - return new Response.Builder() - .protocol(Protocol.get(CUSTOM_REPEAT_REQ_PROTOCOL)) - .request(request) //multi thread - .build(); - } - requestIdsMap.put(requestKey, time); - Log.e("REPEAT-REQUEST", "注册请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url()); -// Request.Builder builder = request.newBuilder(); -// builder.addHeader("header", jsonObject.toString()); - return chain.proceed(request); - } catch (IOException e) { - throw e; - } finally { - if (requestIdsMap.containsKey(requestKey) && requestIdsMap.containsValue(time)) {//请求任务完成删除map中的数据 - requestIdsMap.remove(requestKey); - Log.e("REPEAT-REQUEST", "移除请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url()); - } - } - } - }; - - //如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了 - OkHttpClient.Builder builder = new OkHttpClient.Builder(); - builder.connectTimeout(timeOut, TimeUnit.SECONDS); // 设置连接超时时间 - builder.writeTimeout(timeOut, TimeUnit.SECONDS);// 设置写入超时时间 - builder.readTimeout(timeOut, TimeUnit.SECONDS);// 设置读取数据超时时间 - builder.retryOnConnectionFailure(true);// 设置进行连接失败重试 - builder.addInterceptor(interceptor); -// builder.addInterceptor(myHttpInterceptor); -// builder.addNetworkInterceptor(mRequestInterceptor); - - // 设置缓存文件路径 - String cacheDirectory = mContext.getExternalCacheDir().getAbsolutePath() + "/OkHttpCache"; - Cache cache = new Cache(new File(cacheDirectory), cacheSize); - builder.cache(cache);// 设置缓存 - okHttpClient = builder.build(); - } - - mRetrofit = new Retrofit.Builder() - .client(okHttpClient) - .baseUrl(UrlAddress.ROOT_URL) - .addConverterFactory(GsonConverterFactory.create()) - .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) - .build(); - } -// if (null == mGankaoRetrofit) { -// mGankaoRetrofit = new Retrofit.Builder() -// .client(okHttpClient) -// .baseUrl(UrlAddress.GANKAN_ROOT_URL) -// .addConverterFactory(GsonConverterFactory.create()) -// .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) -// .build(); -// } - } - - public static void init(Context context) { - if (INSTANCE == null) { - INSTANCE = new NetInterfaceManager(context); - } - } - - public static NetInterfaceManager getInstance() { - if (INSTANCE == null) { - throw new IllegalStateException("You must be init NetworkManager first"); - } - return INSTANCE; - } - - public OkHttpClient getOkHttpClient() { - return okHttpClient; - } - - public Observable> getsnInfoControl() { - return mRetrofit.create(SNInfoApi.class) - .getsninfo(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable getsettingControl() { - return mRetrofit.create(Setting.class) - .getSetting(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable>> getForceInstallControl() { - return mRetrofit.create(ForceInstall.class) - .getForceInstall(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable> getBrowserControl() { - return mRetrofit.create(Browser.class) - .getBrowser(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable> getLabelControl() { - return mRetrofit.create(BrowserLabel.class) - .getLabel(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable>> getAppStartControl() { - return mRetrofit.create(QuerySnAppStart.class) - .getAppStatu(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable>> getQueryAllAppControl() { - return mRetrofit.create(QueryAllApp.class) - .getAllApp(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable getTimeControl() { - return mRetrofit.create(TimeControl.class) - .getTimeControl(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable> getUserAvatarInfoControl() { - return mRetrofit.create(UserInfoControl.class) - .getUserAvatarInfo(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable getRunningAppObservable(String json) { - return mRetrofit.create(RunningApp.class) - .sendAppInfo(Utils.getSerial(), json) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable getQRCodeApiControl() { - return mRetrofit.create(QRCodeApi.class) - .getQRCodeApi() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable getAppInsideControl() { - return mRetrofit.create(QueryAppInside.class) - .getAppInside(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable getGetGuideControl() { - return mRetrofit.create(GetGuideApi.class) - .getGuidePic(2) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable getSnUidApiControl() { - return mRetrofit.create(GetSnUidApi.class) - .getSnUid(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public Observable getBatchApiControl() { - return mRetrofit.create(GetBatchApi.class) - .getBatch(Utils.getSerial()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - - public BindDevices getbindDevicesControl() { - return mRetrofit.create(BindDevices.class); - } - - public AddAppInstall getAddAppInstallControl() { - return mRetrofit.create(AddAppInstall.class); - } - - public APPJump getAppJumpControl() { - return mRetrofit.create(APPJump.class); - } - - public UpdateAdminSn getUpdateAdminSnControl() { - return mRetrofit.create(UpdateAdminSn.class); - } - - public NewestAppUpdate getNewestAppUpdateControl() { - return mRetrofit.create(NewestAppUpdate.class); - } - - public UploadScreenshot getUploadScreenshotControl() { - return mRetrofit.create(UploadScreenshot.class); - } - - public ScreenLock getScreenLockControl() { - return mRetrofit.create(ScreenLock.class); - } - - public ScreenState setScreen() { - return mRetrofit.create(ScreenState.class); - } - - public SaveSnUidApi getSaveSnUidApiControl() { - return mRetrofit.create(SaveSnUidApi.class); - } - - public AppUsedApi getAppUsedControl() { - return mRetrofit.create(AppUsedApi.class); - } - - public GetControlScreenshotApi getControlScreenshotApi() { - return mRetrofit.create(GetControlScreenshotApi.class); - } - -// //赶考 -// -// public CreateUserApi getCreateUserControl() { -// return mGankaoRetrofit.create(CreateUserApi.class); -// } -// -// public ActiveUserApi getActiveUserControl() { -// return mGankaoRetrofit.create(ActiveUserApi.class); -// } -// -// public QueryProductApi getQueryProductControl() { -// return mGankaoRetrofit.create(QueryProductApi.class); -// } -// -// public QueryPowerUserListApi getQueryPowerUserListControl() { -// return mGankaoRetrofit.create(QueryPowerUserListApi.class); -// } -// -// public UserProductsApi getUserProductsControl() { -// return mGankaoRetrofit.create(UserProductsApi.class); -// } -// -// public CancelUserPowerApi getCancelUserPowerControl() { -// return mGankaoRetrofit.create(CancelUserPowerApi.class); -// } -// -// public UpgradeUserPowerApi getUpgradeUserPowerControl() { -// return mGankaoRetrofit.create(UpgradeUserPowerApi.class); -// } -} diff --git a/app/src/main/java/com/uiui/sn/network/HTTPInterface.java b/app/src/main/java/com/uiui/sn/network/HTTPInterface.java index 22e0827..17413e3 100644 --- a/app/src/main/java/com/uiui/sn/network/HTTPInterface.java +++ b/app/src/main/java/com/uiui/sn/network/HTTPInterface.java @@ -6,8 +6,6 @@ import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.os.Build; import android.os.Environment; import android.provider.Settings; @@ -19,27 +17,20 @@ import androidx.core.content.ContextCompat; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.blankj.utilcode.util.ImageUtils; import com.google.gson.Gson; import com.google.gson.JsonObject; -import com.google.gson.JsonParser; import com.uiui.sn.BuildConfig; -import com.uiui.sn.Statistics.AppInformation; -import com.uiui.sn.Statistics.StatisticsInfo; -import com.uiui.sn.bean.zuoye.AppInfo; -import com.uiui.sn.bean.zuoye.AppStart; -import com.uiui.sn.bean.zuoye.AppUploadInfo; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.bean.zuoye.Label; -import com.uiui.sn.bean.zuoye.browser.BrowserApiData; -import com.uiui.sn.bean.zuoye.browser.BrowserBean; -import com.uiui.sn.jpush.TagAliasOperatorHelper; +import com.uiui.sn.bean.AppInfo; +import com.uiui.sn.bean.AppStart; +import com.uiui.sn.bean.AppUploadInfo; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.bean.Label; +import com.uiui.sn.bean.browser.BrowserApiData; +import com.uiui.sn.bean.browser.BrowserBean; +import com.uiui.sn.config.CommonConfig; import com.uiui.sn.manager.ControlManager; -import com.uiui.sn.manager.NetInterfaceManager; -import com.uiui.sn.network.api.GetControlScreenshotApi; import com.uiui.sn.network.api.NewestAppUpdate; import com.uiui.sn.network.api.UpdateAdminSn; -import com.uiui.sn.network.api.UploadScreenshot; import com.uiui.sn.service.ManagerService; import com.uiui.sn.utils.ApkUtils; import com.uiui.sn.utils.AppUsedTimeUtils; @@ -51,78 +42,33 @@ import com.uiui.sn.utils.TimeUtils; import com.uiui.sn.utils.URLUtils; import com.uiui.sn.utils.Utils; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Set; import java.util.stream.Collectors; import cn.jpush.android.api.JPushInterface; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.ObservableSource; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.annotations.NonNull; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.BiFunction; -import io.reactivex.functions.Function; -import io.reactivex.schedulers.Schedulers; -import kotlin.io.OnErrorAction; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.ObservableEmitter; +import io.reactivex.rxjava3.core.ObservableOnSubscribe; +import io.reactivex.rxjava3.core.ObservableSource; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.functions.BiFunction; +import io.reactivex.rxjava3.functions.Function; +import io.reactivex.rxjava3.schedulers.Schedulers; import okhttp3.MediaType; import okhttp3.MultipartBody; import okhttp3.RequestBody; -import static com.uiui.sn.jpush.TagAliasOperatorHelper.ACTION_SET; - public class HTTPInterface { private static String TAG = HTTPInterface.class.getSimpleName(); - public static void SendAppInstall(String jsonString) { -// if (packageName.equals(packages)) { -// Log.e("SendAppInstall", installOrRemove + "return: " + packages); -// return; -// } -// Log.e(TAG, "SendAppInstall: " + jsonString); - NetInterfaceManager.getInstance() - .getAddAppInstallControl() - .installorRemove( - Utils.getSerial(), jsonString - ).subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { - @Override - public void onSubscribe(@NonNull Disposable d) { - - } - - @Override - public void onNext(@NonNull BaseResponse baseResponse) { - int code = baseResponse.code; - String msg = baseResponse.msg; - Log.e("SendAppInstall", "onNext: " + "code" + code + ",msg:" + msg); - } - - @Override - public void onError(@NonNull Throwable e) { - Log.e("SendAppInstall", "onError: " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.e("SendAppInstall", "onComplete: "); - - } - }); - } public static void setBrowserWhiteList(Context context) { Observable.zip(NetInterfaceManager.getInstance().getLabelControl(), @@ -343,7 +289,6 @@ public class HTTPInterface { } } - public static void getAppStart(final Context context, List appInfoList) { NetInterfaceManager.getInstance() .getAppStartControl() @@ -434,7 +379,6 @@ public class HTTPInterface { ApkUtils.addShortcut(context); } - //应用自启动 public static void setAppAutoStart(Context context, List list) { String auto_allow = ""; @@ -734,7 +678,7 @@ public class HTTPInterface { public void onNext(@NonNull BaseResponse> listBaseResponse) { int code = listBaseResponse.code; if (code == 200) { - Log.e("getAllappPackage", "onNext: " + listBaseResponse.msg); + Log.e("getAllappPackage", "onNext: " + listBaseResponse); List appInfoList = listBaseResponse.data; if (null != appInfoList && appInfoList.size() != 0) { HashSet allAppPkg = new HashSet<>(); @@ -742,15 +686,14 @@ public class HTTPInterface { allAppPkg.add(appInfo.getApp_package()); } String allPkgSet = String.join(",", allAppPkg); - Settings.System.putString(context.getContentResolver(), "only_jgy_shortcut_list", allPkgSet); + Settings.System.putString(context.getContentResolver(), CommonConfig.ONLY_SHORTCUT_LIST, allPkgSet); ApkUtils.writeAppPackageList(context, allPkgSet); HTTPInterface.getAppStart(context, appInfoList); } else { - ApkUtils.writeAppPackageList(context, "Invalid"); + ApkUtils.writeAppPackageList(context, ""); } } else { - ApkUtils.writeAppPackageList(context, "Invalid"); - + ApkUtils.writeAppPackageList(context, ""); } } @@ -782,7 +725,7 @@ public class HTTPInterface { if (null != appInfos && appInfos.size() != 0) { getForceInstallState(context, appInfos); } - JGYUtils.getInstance().deleteOtherApp(); +// JGYUtils.getInstance().deleteOtherApp(); } else { boolean qch_force_app = JGYUtils.putString(context.getContentResolver(), "qch_force_app", "invalid"); Log.e(TAG, "qch_force_app:" + qch_force_app + ":" + "invalid"); @@ -939,7 +882,6 @@ public class HTTPInterface { }); } - synchronized public static void getTimeControl(final Context context) { NetInterfaceManager.getInstance() .getTimeControl() @@ -996,36 +938,6 @@ public class HTTPInterface { }); } - public static void sendAppUsed(Context context) { - String statistics = Utils.getAppUsedStatistics(context); - Log.e(TAG, "sendAppUsed: " + statistics); - NetInterfaceManager.getInstance().getAppUsedControl() - .getAppUsed(Utils.getSerial(), statistics) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - Log.e("sendAppUsed", "onSubscribe: "); - } - - @Override - public void onNext(BaseResponse response) { - Log.e("sendAppUsed", "onNext: " + JSONObject.toJSONString(response)); - } - - @Override - public void onError(Throwable e) { - Log.e("sendAppUsed", "onError: " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.e("sendAppUsed", "onComplete: "); - } - }); - } - public static void sendRunningApp(Context context) { String packageName = AppUsedTimeUtils.getInstance().getAppPackageName(); long time = AppUsedTimeUtils.getInstance().getStartTime(); @@ -1176,115 +1088,5 @@ public class HTTPInterface { }); } - private static List factoryApp = new ArrayList() {{ - this.add("com.gankao.gkwxhd"); - this.add("com.jiaoguanyi.os"); - }}; - public static void getAPPinfo(Context context) { - Observable.create((ObservableOnSubscribe>) emitter -> { - PackageManager pm = context.getPackageManager(); - List list = pm.getInstalledPackages(0); - List uploadInfos = new ArrayList<>(); - Intent intent = new Intent(Intent.ACTION_MAIN); - intent.addCategory(Intent.CATEGORY_LAUNCHER); - List appsWithLauncher = pm.queryIntentActivities(intent, 0); - HashSet pkgs = new HashSet<>(); - for (ResolveInfo info : appsWithLauncher) { - pkgs.add(info.activityInfo.packageName); - } - Log.e(TAG, "getAPPinfo: " + pkgs); - for (PackageInfo info : list) { - if (!pkgs.contains(info.packageName)) { - continue; - } -// if (((info.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) && !factoryApp.contains(info.packageName)) { -// continue; -// } - AppUploadInfo uploadInfo = new AppUploadInfo(); - uploadInfo.setApp_package(info.packageName); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - uploadInfo.setApp_version_code(info.getLongVersionCode()); - } else { - uploadInfo.setApp_version_code(info.versionCode); - } - uploadInfo.setFirstInstallTime(info.firstInstallTime / 1000); - uploadInfo.setLastUpdateTime(info.lastUpdateTime / 1000); - uploadInfos.add(uploadInfo); - } - emitter.onNext(uploadInfos); - }) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer>() { - @Override - public void onSubscribe(Disposable d) { - Log.e("getAPPinfo", "onSubscribe: "); - } - - @Override - public void onNext(List appUploadInfos) { - String json = JSONArray.toJSONString(appUploadInfos); - Log.e("getAPPinfo", "onNext: " + json); - HTTPInterface.SendAppInstall(json); - } - - @Override - public void onError(Throwable e) { - Log.e("getAPPinfo", "onError: " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.e("getAPPinfo", "onComplete: "); - } - }); - } - - public static void setJpushTags(Context context) { - NetInterfaceManager.getInstance() - .getBatchApiControl() - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - Log.e("getBatch", "onSubscribe: "); - } - - @Override - public void onNext(BaseResponse baseResponse) { - Log.e("getBatch", "onNext: " + baseResponse); - if (baseResponse.code == 200) { - Gson gson = new Gson(); - JsonObject jsonObject = JsonParser.parseString(gson.toJson(baseResponse.data)).getAsJsonObject(); - int batch_id = jsonObject.get("batch_id").getAsInt(); - Log.e("getBatch", "onNext: " + batch_id); - Set set = new HashSet(); - set.add(batch_id); - setTag(context, set); - } else { - Log.e("getBatch", "onNext: " + baseResponse.msg); - } - } - - @Override - public void onError(Throwable e) { - Log.e("getBatch", "onError: " + e.getMessage()); - onComplete(); - } - - @Override - public void onComplete() { - Log.e("getBatch", "onComplete: "); - } - }); - } - - private static void setTag(Context context, Set set) { - TagAliasOperatorHelper.TagAliasBean tagAliasBean = new TagAliasOperatorHelper.TagAliasBean(); - tagAliasBean.action = ACTION_SET; - TagAliasOperatorHelper.sequence++; - tagAliasBean.tags = set; - tagAliasBean.isAliasAction = false; - TagAliasOperatorHelper.getInstance().handleAction(context, TagAliasOperatorHelper.sequence, tagAliasBean); - } } diff --git a/app/src/main/java/com/uiui/sn/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/sn/network/NetInterfaceManager.java new file mode 100644 index 0000000..7007929 --- /dev/null +++ b/app/src/main/java/com/uiui/sn/network/NetInterfaceManager.java @@ -0,0 +1,647 @@ +package com.uiui.sn.network; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.os.Build; +import android.provider.Settings; +import android.text.TextUtils; +import android.util.Log; + +import com.alibaba.fastjson.JSONArray; +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.tencent.android.tpush.XGIOperateCallback; +import com.tencent.android.tpush.XGPushManager; +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiui.sn.bean.AppInfo; +import com.uiui.sn.bean.AppStart; +import com.uiui.sn.bean.AppUploadInfo; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.bean.Label; +import com.uiui.sn.bean.UserAvatarInfo; +import com.uiui.sn.bean.SnInfo; +import com.uiui.sn.bean.browser.BrowserApiData; +import com.uiui.sn.config.CommonConfig; +import com.uiui.sn.network.api.APPJump; +import com.uiui.sn.network.api.AddAppInstall; +import com.uiui.sn.network.api.BindDevices; +import com.uiui.sn.network.api.Browser; +import com.uiui.sn.network.api.BrowserLabel; +import com.uiui.sn.network.api.ForceInstall; +import com.uiui.sn.network.api.GetBatchApi; +import com.uiui.sn.network.api.GetControlScreenshotApi; +import com.uiui.sn.network.api.GetGuideApi; +import com.uiui.sn.network.api.GetPublicIPApi; +import com.uiui.sn.network.api.NewestAppUpdate; +import com.uiui.sn.network.api.QRCodeApi; +import com.uiui.sn.network.api.QueryAllApp; +import com.uiui.sn.network.api.QueryAppInside; +import com.uiui.sn.network.api.QuerySnAppStart; +import com.uiui.sn.network.api.RunningApp; +import com.uiui.sn.network.api.SNInfoApi; +import com.uiui.sn.network.api.ScreenLock; +import com.uiui.sn.network.api.ScreenState; +import com.uiui.sn.network.api.Setting; +import com.uiui.sn.network.api.TimeControl; +import com.uiui.sn.network.api.UpdateAdminSn; +import com.uiui.sn.network.api.UploadScreenshot; +import com.uiui.sn.network.api.UserInfoControl; +import com.uiui.sn.utils.JGYUtils; +import com.uiui.sn.utils.MD5Util; +import com.uiui.sn.utils.SPUtils; +import com.uiui.sn.utils.Utils; + +import org.jetbrains.annotations.NotNull; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; + +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.ObservableEmitter; +import io.reactivex.rxjava3.core.ObservableOnSubscribe; +import io.reactivex.rxjava3.core.ObservableSource; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.functions.Function; +import io.reactivex.rxjava3.schedulers.Schedulers; +import io.reactivex.rxjava3.subjects.BehaviorSubject; +import okhttp3.Cache; +import okhttp3.Interceptor; +import okhttp3.OkHttpClient; +import okhttp3.Protocol; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import retrofit2.Retrofit; +import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory; +import retrofit2.converter.gson.GsonConverterFactory; + +public class NetInterfaceManager { + @SuppressLint("StaticFieldLeak") + private static NetInterfaceManager INSTANCE; + private Context mContext; + private Retrofit mRetrofit; + private OkHttpClient okHttpClient; + private final ConcurrentHashMap requestIdsMap = new ConcurrentHashMap<>(); + + //超时时间 + private static int timeOut = 5; + // 缓存文件最大限制大小20M + private static long cacheSize = 1024 * 1024 * 64; + public static final String CUSTOM_REPEAT_REQ_PROTOCOL = "MY_CUSTOM_REPEAT_REQ_PROTOCOL"; + private String TAG = NetInterfaceManager.class.getSimpleName(); + + private NetInterfaceManager(Context context) { + mContext = context; + + if (null == mRetrofit) { + if (okHttpClient == null) { + Interceptor myHttpInterceptor = new Interceptor() { + @NotNull + @Override + public Response intercept(@NotNull Chain chain) throws IOException { + Request request = chain.request(); + String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString()); + Response response = chain.proceed(request); //准备返回Response + synchronized (requestIdsMap) { + requestIdsMap.remove(requestKey); //在这里移除正常的请求登记 + Log.e("REPEAT-REQUEST", "移除请求2:" + requestKey + " --- " + Thread.currentThread().getName() + " URL = " + request.url()); + } + return response; + } + }; + Interceptor mRequestInterceptor = new Interceptor() { + @NotNull + @Override + public Response intercept(@NotNull Chain chain) throws IOException { + Request request = chain.request(); + //拦截处理重复的HTTP 请求,类似 防止快速点击按钮去重 可以不去处理了,全局统一处理 + String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString()); + synchronized (requestIdsMap) { + if (requestIdsMap.get(requestKey) == null) { +// Log.e("REPEAT-REQUEST", "intercept: " + requestIdsMap); + requestIdsMap.put(requestKey, System.currentTimeMillis()); + Log.e("REPEAT-REQUEST", "注册请求:" + requestKey + " --- " + Thread.currentThread().getName() + " URL = " + request.url()); + } else { + //如果是重复的请求,抛出一个自定义的错误,这个错误大家根据自己的业务定义吧 + Log.e("REPEAT-REQUEST", "重复请求:" + requestKey + " --- " + Thread.currentThread().getName() + " URL = " + request.url()); + return new Response.Builder() + .protocol(Protocol.get(CUSTOM_REPEAT_REQ_PROTOCOL)) + .request(request) //multi thread + .build(); + } + } + Response originalResponse = chain.proceed(request); + return originalResponse.newBuilder().build(); + } + }; + Interceptor interceptor = new Interceptor() { + @NotNull + @Override + public Response intercept(@NotNull Chain chain) throws IOException { + Request request = chain.request(); + //相同的请求 + String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString()); + long time = System.currentTimeMillis();//请求时间 + try { + if (requestIdsMap.size() > 0 && requestIdsMap.containsKey(requestKey)) { + Log.e("REPEAT-REQUEST", "重复请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url()); +// chain.call().cancel(); + return new Response.Builder() + .protocol(Protocol.get(CUSTOM_REPEAT_REQ_PROTOCOL)) + .request(request) //multi thread + .build(); + } + requestIdsMap.put(requestKey, time); + Log.e("REPEAT-REQUEST", "注册请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url()); +// Request.Builder builder = request.newBuilder(); +// builder.addHeader("header", jsonObject.toString()); + return chain.proceed(request); + } catch (IOException e) { + Log.e(TAG, "intercept: " + e.getMessage()); + throw e; + } finally { + if (requestIdsMap.containsKey(requestKey) && requestIdsMap.containsValue(time)) {//请求任务完成删除map中的数据 + requestIdsMap.remove(requestKey); + Log.e("REPEAT-REQUEST", "移除请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url()); + } + } + } + }; + + //如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了 + OkHttpClient.Builder builder = new OkHttpClient.Builder(); + builder.connectTimeout(timeOut, TimeUnit.SECONDS); // 设置连接超时时间 + builder.writeTimeout(timeOut, TimeUnit.SECONDS);// 设置写入超时时间 + builder.readTimeout(timeOut, TimeUnit.SECONDS);// 设置读取数据超时时间 + builder.retryOnConnectionFailure(true);// 设置进行连接失败重试 + builder.addInterceptor(interceptor); +// builder.addInterceptor(myHttpInterceptor); +// builder.addNetworkInterceptor(mRequestInterceptor); + + // 设置缓存文件路径 + String cacheDirectory = mContext.getExternalCacheDir().getAbsolutePath() + "/OkHttpCache"; + Cache cache = new Cache(new File(cacheDirectory), cacheSize); + builder.cache(cache);// 设置缓存 + okHttpClient = builder.build(); + } + + mRetrofit = new Retrofit.Builder() + .client(okHttpClient) + .baseUrl(UrlAddress.ROOT_URL) + .addConverterFactory(GsonConverterFactory.create()) + .addCallAdapterFactory(RxJava3CallAdapterFactory.create()) + .build(); + } +// if (null == mGankaoRetrofit) { +// mGankaoRetrofit = new Retrofit.Builder() +// .client(okHttpClient) +// .baseUrl(UrlAddress.GANKAN_ROOT_URL) +// .addConverterFactory(GsonConverterFactory.create()) +// .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) +// .build(); +// } + } + + public static void init(Context context) { + if (INSTANCE == null) { + INSTANCE = new NetInterfaceManager(context); + } + } + + public static NetInterfaceManager getInstance() { + if (INSTANCE == null) { + throw new IllegalStateException("You must be init NetworkManager first"); + } + return INSTANCE; + } + + public OkHttpClient getOkHttpClient() { + return okHttpClient; + } + + public Observable> getsnInfoControl() { + return mRetrofit.create(SNInfoApi.class) + .getsninfo(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable getsettingControl() { + return mRetrofit.create(Setting.class) + .getSetting(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable>> getForceInstallControl() { + return mRetrofit.create(ForceInstall.class) + .getForceInstall(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable> getBrowserControl() { + return mRetrofit.create(Browser.class) + .getBrowser(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable> getLabelControl() { + return mRetrofit.create(BrowserLabel.class) + .getLabel(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable>> getAppStartControl() { + return mRetrofit.create(QuerySnAppStart.class) + .getAppStatu(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable>> getQueryAllAppControl() { + return mRetrofit.create(QueryAllApp.class) + .getAllApp(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable getTimeControl() { + return mRetrofit.create(TimeControl.class) + .getTimeControl(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable> getUserAvatarInfoControl() { + return mRetrofit.create(UserInfoControl.class) + .getUserAvatarInfo(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable getRunningAppObservable(String json) { + return mRetrofit.create(RunningApp.class) + .sendAppInfo(Utils.getSerial(), json) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable getQRCodeApiControl() { + return mRetrofit.create(QRCodeApi.class) + .getQRCodeApi() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable getAppInsideControl() { + return mRetrofit.create(QueryAppInside.class) + .getAppInside(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable getGetGuideControl() { + return mRetrofit.create(GetGuideApi.class) + .getGuidePic(2) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public Observable getBatchApiControl() { + return mRetrofit.create(GetBatchApi.class) + .getBatch(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + + public BindDevices getbindDevicesControl() { + return mRetrofit.create(BindDevices.class); + } + + public AddAppInstall getAddAppInstallControl() { + return mRetrofit.create(AddAppInstall.class); + } + + public APPJump getAppJumpControl() { + return mRetrofit.create(APPJump.class); + } + + public UpdateAdminSn getUpdateAdminSnControl() { + return mRetrofit.create(UpdateAdminSn.class); + } + + public NewestAppUpdate getNewestAppUpdateControl() { + return mRetrofit.create(NewestAppUpdate.class); + } + + public UploadScreenshot getUploadScreenshotControl() { + return mRetrofit.create(UploadScreenshot.class); + } + + public ScreenLock getScreenLockControl() { + return mRetrofit.create(ScreenLock.class); + } + + public ScreenState setScreen() { + return mRetrofit.create(ScreenState.class); + } + + public GetControlScreenshotApi getControlScreenshotApi() { + return mRetrofit.create(GetControlScreenshotApi.class); + } + + + public interface PublicIP { + void set(String ip); + } + + /** + * 获取设备公网IP + * + * @param publicIP + */ + public void getPublicIP(PublicIP publicIP) { + Retrofit retrofit = new Retrofit.Builder() + .client(NetInterfaceManager.getInstance().getOkHttpClient()) + .baseUrl(UrlAddress.SHOUHU_CITYJSON) + .addConverterFactory(GsonConverterFactory.create()) + .addCallAdapterFactory(RxJava3CallAdapterFactory.create()) + .build(); + retrofit.create(GetPublicIPApi.class) + .getPublicIP() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + Log.e("getPublicIP", "onSubscribe: "); + } + + @Override + public void onNext(ResponseBody responseBody) { + try { + String s = responseBody.string(); + Log.e("getPublicIP", "onNext: " + s); + if (!TextUtils.isEmpty(s)) { + //var returnCitySN = {"cip": "183.11.74.141", "cid": "440300", "cname": "广东省深圳市"}; + if (s.contains("{")) { + String jsonString = s.substring(s.indexOf("{"), s.lastIndexOf("}") + 1); + JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject(); + String ip = jsonObject.get("cip").getAsString(); + if (!TextUtils.isEmpty(ip)) { + publicIP.set(ip); + } else { + publicIP.set(""); + } + } else { + publicIP.set(""); + } + } else { + publicIP.set(""); + } + } catch (IOException e) { + e.printStackTrace(); + Log.e("getPublicIP", "IOException: " + e.getMessage()); + } + } + + @Override + public void onError(Throwable e) { + Log.e("getPublicIP", "onError: " + e.getMessage()); + publicIP.set(""); + } + + @Override + public void onComplete() { + Log.e("getPublicIP", "onComplete: "); + } + }); + } + + + public interface ObserverCallback { + void onSubscribe(Disposable d); + + void onNext(BaseResponse response); + + void onError(Throwable e); + + void onComplete(); + } + + + public void getSnInfo(BehaviorSubject provider, ObserverCallback callback) { + NetInterfaceManager.getInstance() + .getsnInfoControl() + .compose(RxLifecycle.bindUntilEvent(provider, ActivityEvent.DESTROY)) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + Log.e( "getSnInfo", "onSubscribe: "); + callback.onSubscribe(d); + } + + @Override + public void onNext(BaseResponse userInfoBaseResponse) { + Log.e( "getSnInfo", "onNext: " + userInfoBaseResponse); + SPUtils.put(mContext, CommonConfig.JGY_FIRST_CONNECT, 1); + callback.onNext(userInfoBaseResponse); + int code = userInfoBaseResponse.code; + if (code == 200) { + SPUtils.put(mContext, CommonConfig.isLogined, 1); + SnInfo snInfo = userInfoBaseResponse.data; + Settings.System.putString(mContext.getContentResolver(), "UserInfo_username", snInfo.getSn_name()); + Settings.System.putString(mContext.getContentResolver(), "UserInfo_grade", snInfo.getGrade()); + SPUtils.put(mContext, "sn_id", snInfo.getId()); + if (!TextUtils.isEmpty(snInfo.getSn_name())) { + SPUtils.put(mContext, "USERINFO_NAME", snInfo.getSn_name()); + } + if (!TextUtils.isEmpty(snInfo.getSchool())) { + SPUtils.put(mContext, "USERINFO_SCHOOL", snInfo.getSchool()); + } + if (!TextUtils.isEmpty(snInfo.getGrade())) { + SPUtils.put(mContext, "USERINFO_GRADE", snInfo.getGrade()); + } + } else if (code == 300) { + SPUtils.put(mContext, CommonConfig.isLogined, 0); + } else if (code == 400) { + SPUtils.put(mContext, CommonConfig.isLogined, 2); + } + } + + @Override + public void onError(Throwable e) { + Log.e( "getSnInfo", "onError: " + e.getMessage()); + callback.onError(e); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("getSnInfo", "onComplete: "); + callback.onComplete(); + } + }); + } + + + /** + * 设置推送标签 + * + * @param provider + * @param callback + */ + public void setPushTags(BehaviorSubject provider, ObserverCallback callback) { + NetInterfaceManager.getInstance() + .getBatchApiControl() + .compose(RxLifecycle.bindUntilEvent(provider, ActivityEvent.DESTROY)) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e(TAG + ":" + "setPushTags", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse response) { + Log.e(TAG + ":" + "setPushTags", "onNext: " + response); + if (response.code == 200) { + JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(response.data)).getAsJsonObject(); + if (jsonObject.get("batch_id") == null) return; + String batch = jsonObject.get("batch_id").getAsString(); + Log.e(TAG + ":" + "setPushTags", "onNext: " + batch); + if (!TextUtils.isEmpty(batch)) { + Set set = new HashSet(); + set.add(batch); + JGYUtils.getInstance().getAppPlatform(platform -> { + if (platform == JGYUtils.MTKPlatform) { + set.add(JGYUtils.MTKTag); + } else if (platform == JGYUtils.ZhanruiPlatform) { + set.add(JGYUtils.ZhanruiTag); + } + }); + Set tagsSet = new HashSet<>(set); + XGPushManager.clearAndAppendTags(mContext, "clearAndAppendTags :" + System.currentTimeMillis(), tagsSet, new XGIOperateCallback() { + @Override + public void onSuccess(Object o, int i) { + Log.e("setPushTags", "onSuccess: " + o); + } + + @Override + public void onFail(Object o, int i, String s) { + Log.e("setPushTags", "onFail: " + o); + } + }); + } else { + Log.e(TAG + ":" + "setPushTags", "onNext: " + "batch empty"); + } + } else { + Log.e(TAG + ":" + "setPushTags", "onNext: " + response.toString()); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e(TAG + ":" + "setPushTags", "onError: " + e.getMessage()); + onComplete(); + } + + @Override + public void onComplete() { + Log.e(TAG + ":" + "setPushTags", "onComplete: "); + } + }); + } + + + /** + * 发送app安装情况 + */ + public void SendAppInstallInfo() { + Observable.create(new ObservableOnSubscribe() { + @Override + public void subscribe(@NonNull ObservableEmitter emitter) throws Throwable { + PackageManager pm = mContext.getPackageManager(); + List list = pm.getInstalledPackages(0); + List uploadInfos = new ArrayList<>(); + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.addCategory(Intent.CATEGORY_LAUNCHER); + List appsWithLauncher = pm.queryIntentActivities(intent, 0); + List pkgs = new ArrayList<>(); + for (ResolveInfo info : appsWithLauncher) { + pkgs.add(info.activityInfo.packageName); + } + Log.e(TAG, "SendAppInstallInfo: " + pkgs); + for (PackageInfo info : list) { + if (!pkgs.contains(info.packageName)) { + continue; + } + AppUploadInfo uploadInfo = new AppUploadInfo(); + uploadInfo.setApp_package(info.packageName); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + uploadInfo.setApp_version_code(info.getLongVersionCode()); + } else { + uploadInfo.setApp_version_code(info.versionCode); + } + uploadInfo.setFirstInstallTime(info.firstInstallTime / 1000); + uploadInfo.setLastUpdateTime(info.lastUpdateTime / 1000); + uploadInfos.add(uploadInfo); + } + String json = JSONArray.toJSONString(uploadInfos); + emitter.onNext(json); + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .concatMap(new Function>() { + @Override + public ObservableSource apply(String s) throws Throwable { + Log.e("SendAppInstallInfo", "apply: " + s); + return getAddAppInstallControl() + .installorRemove(Utils.getSerial(), s); + } + }).subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("SendAppInstallInfo", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse baseResponse) { + Log.e("SendAppInstallInfo", "onNext: " + baseResponse); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("SendAppInstallInfo", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("SendAppInstallInfo", "onComplete: "); + } + }); + + } + +} diff --git a/app/src/main/java/com/uiui/sn/network/UrlAddress.java b/app/src/main/java/com/uiui/sn/network/UrlAddress.java index df651f1..51263a9 100644 --- a/app/src/main/java/com/uiui/sn/network/UrlAddress.java +++ b/app/src/main/java/com/uiui/sn/network/UrlAddress.java @@ -3,7 +3,7 @@ package com.uiui.sn.network; public class UrlAddress { //主页接口 public static final String ROOT_URL = "https://led.aolelearn.cn/android/"; - //获取班级ID + //获取批次 public static final String GET_BATCH = "sn/getBatch"; //设备信息接口 public static final String SNINFO = "sn/getSnInfo"; @@ -33,7 +33,7 @@ public class UrlAddress { public final static String GET_APP_START = "sn/querySnAppStart"; //发app跳转管控 public final static String GET_APP_JUMP = "sn/querySnJump"; - //发app跳转管控 + //app内部管控 public final static String QUERY_APP_INSIDE = "control/queryAppInside"; //发送卸载或者安装信息 public final static String SEND_INSTALLEDORREMOVED = "app/addAppInstall"; @@ -49,12 +49,6 @@ public class UrlAddress { public final static String GET_TIME_CONTROL = "sn/getTimeControl"; //获取用户头像和信息 public static final String GET_USER_AVATAR_INFO = "sn/getUserAvatarInfo"; - //上传设备赶考的UID - public static final String POST_USER_SAVESNUID = "sn/saveSnUid"; - //获取激活时间和赶考UID - public static final String GET_SN_UID = "sn/getSnUid"; - //获取app使用信息 - public static final String UPLOAD_APP_USE_INFO = "sn/uploadAppUseInfo"; //获取小程序二维码 public static final String GET_APPLET_QRCODE = "file/getAppletQrCode"; //获取操作指南 @@ -65,24 +59,8 @@ public class UrlAddress { public static final String GET_APP_AND_WHITE = "getAppAndWhite"; - -// //赶考 -// public static final String GANKAN_ROOT_URL = "https://www.gankao.com/api/service/"; -// //创建/查询用户 -// public static final String CREATE_USER = "createUser"; -// //用户授权/激活权限 -// public static final String ACTIVE_USER = "activeUser"; -// //获得可用的权限产品规格 -// public static final String QUERY_AVAILABLE_PRODUCT_SPECIFICATIONS = "queryAvailableProductSpecifications"; -// //获取机构的接口授权记录 -// public static final String QUERY_POWER_USER_LIST = "queryPowerUserList"; -// //获取用户已获得的产品列表(权限、单体课程、套餐等) -// public static final String GET_USER_PRODUCTS = "getUserProducts"; -// //升级用户会员权限的学段 -// public static final String UPGRADE_USER_POWER = "upgradeUserPower"; -// //撤销指定的用户授权记录 -// public static final String CANCEL_USER_POWER = "cancelUserPower"; - + /*获取公网IP*/ + public static final String SHOUHU_CITYJSON = "http://pv.sohu.com/cityjson/"; /* * 极光 diff --git a/app/src/main/java/com/uiui/sn/network/api/APPJump.java b/app/src/main/java/com/uiui/sn/network/api/APPJump.java index 3db5170..b4f47dc 100644 --- a/app/src/main/java/com/uiui/sn/network/api/APPJump.java +++ b/app/src/main/java/com/uiui/sn/network/api/APPJump.java @@ -1,12 +1,12 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.AppJump; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.AppJump; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; import java.util.List; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/AddAppInstall.java b/app/src/main/java/com/uiui/sn/network/api/AddAppInstall.java index 0da2cc1..4922967 100644 --- a/app/src/main/java/com/uiui/sn/network/api/AddAppInstall.java +++ b/app/src/main/java/com/uiui/sn/network/api/AddAppInstall.java @@ -1,9 +1,9 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.POST; diff --git a/app/src/main/java/com/uiui/sn/network/api/AppUsedApi.java b/app/src/main/java/com/uiui/sn/network/api/AppUsedApi.java deleted file mode 100644 index 9680515..0000000 --- a/app/src/main/java/com/uiui/sn/network/api/AppUsedApi.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.uiui.sn.network.api; - -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.network.UrlAddress; - -import io.reactivex.Observable; -import retrofit2.http.Field; -import retrofit2.http.FormUrlEncoded; -import retrofit2.http.POST; - -public interface AppUsedApi { - @FormUrlEncoded - @POST(UrlAddress.UPLOAD_APP_USE_INFO) - Observable getAppUsed( - @Field("sn") String sn, - @Field("appInfo") String appinfo - ); -} diff --git a/app/src/main/java/com/uiui/sn/network/api/Applog.java b/app/src/main/java/com/uiui/sn/network/api/Applog.java index fadc01b..44ce647 100644 --- a/app/src/main/java/com/uiui/sn/network/api/Applog.java +++ b/app/src/main/java/com/uiui/sn/network/api/Applog.java @@ -1,9 +1,9 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/BindDevices.java b/app/src/main/java/com/uiui/sn/network/api/BindDevices.java index c25c4b2..3283aaf 100644 --- a/app/src/main/java/com/uiui/sn/network/api/BindDevices.java +++ b/app/src/main/java/com/uiui/sn/network/api/BindDevices.java @@ -1,9 +1,9 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/Browser.java b/app/src/main/java/com/uiui/sn/network/api/Browser.java index 5e0a7ab..9d98dd2 100644 --- a/app/src/main/java/com/uiui/sn/network/api/Browser.java +++ b/app/src/main/java/com/uiui/sn/network/api/Browser.java @@ -1,10 +1,10 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.bean.zuoye.browser.BrowserApiData; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.bean.browser.BrowserApiData; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/BrowserLabel.java b/app/src/main/java/com/uiui/sn/network/api/BrowserLabel.java index 286d817..9604dfa 100644 --- a/app/src/main/java/com/uiui/sn/network/api/BrowserLabel.java +++ b/app/src/main/java/com/uiui/sn/network/api/BrowserLabel.java @@ -1,10 +1,10 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.bean.zuoye.Label; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.bean.Label; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/ForceInstall.java b/app/src/main/java/com/uiui/sn/network/api/ForceInstall.java index a83d510..165878e 100644 --- a/app/src/main/java/com/uiui/sn/network/api/ForceInstall.java +++ b/app/src/main/java/com/uiui/sn/network/api/ForceInstall.java @@ -1,12 +1,12 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.AppInfo; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.AppInfo; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; import java.util.List; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/GetBatchApi.java b/app/src/main/java/com/uiui/sn/network/api/GetBatchApi.java index e825a10..968f954 100644 --- a/app/src/main/java/com/uiui/sn/network/api/GetBatchApi.java +++ b/app/src/main/java/com/uiui/sn/network/api/GetBatchApi.java @@ -1,9 +1,9 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/GetControlScreenshotApi.java b/app/src/main/java/com/uiui/sn/network/api/GetControlScreenshotApi.java index 6aabf03..27e3644 100644 --- a/app/src/main/java/com/uiui/sn/network/api/GetControlScreenshotApi.java +++ b/app/src/main/java/com/uiui/sn/network/api/GetControlScreenshotApi.java @@ -1,9 +1,9 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import okhttp3.MultipartBody; import retrofit2.http.Multipart; import retrofit2.http.POST; diff --git a/app/src/main/java/com/uiui/sn/network/api/GetGuideApi.java b/app/src/main/java/com/uiui/sn/network/api/GetGuideApi.java index 87ccac7..393e817 100644 --- a/app/src/main/java/com/uiui/sn/network/api/GetGuideApi.java +++ b/app/src/main/java/com/uiui/sn/network/api/GetGuideApi.java @@ -1,9 +1,9 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/GetGuideApiTest.java b/app/src/main/java/com/uiui/sn/network/api/GetGuideApiTest.java index 51c6305..1b54bb5 100644 --- a/app/src/main/java/com/uiui/sn/network/api/GetGuideApiTest.java +++ b/app/src/main/java/com/uiui/sn/network/api/GetGuideApiTest.java @@ -2,7 +2,7 @@ package com.uiui.sn.network.api; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/GetPublicIPApi.java b/app/src/main/java/com/uiui/sn/network/api/GetPublicIPApi.java new file mode 100644 index 0000000..77f722c --- /dev/null +++ b/app/src/main/java/com/uiui/sn/network/api/GetPublicIPApi.java @@ -0,0 +1,20 @@ +package com.uiui.sn.network.api; + + +import com.uiui.sn.network.UrlAddress; + +import io.reactivex.rxjava3.core.Observable; +import okhttp3.ResponseBody; +import retrofit2.http.GET; + +/** + * @author : fanhuitong + * e-mail : + * @date : 2021/10/1814:39 + * desc : + * version: 1.0 + */ +public interface GetPublicIPApi { + @GET(UrlAddress.SHOUHU_CITYJSON) + Observable getPublicIP(); +} diff --git a/app/src/main/java/com/uiui/sn/network/api/GetSnUidApi.java b/app/src/main/java/com/uiui/sn/network/api/GetSnUidApi.java deleted file mode 100644 index 023858f..0000000 --- a/app/src/main/java/com/uiui/sn/network/api/GetSnUidApi.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.uiui.sn.network.api; - -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.network.UrlAddress; - -import io.reactivex.Observable; -import retrofit2.http.GET; -import retrofit2.http.Query; - -public interface GetSnUidApi { - @GET(UrlAddress.GET_SN_UID) - Observable getSnUid( - @Query("sn") String sn - ); -} diff --git a/app/src/main/java/com/uiui/sn/network/api/NewestAppUpdate.java b/app/src/main/java/com/uiui/sn/network/api/NewestAppUpdate.java index 19b1c82..0ce3a54 100644 --- a/app/src/main/java/com/uiui/sn/network/api/NewestAppUpdate.java +++ b/app/src/main/java/com/uiui/sn/network/api/NewestAppUpdate.java @@ -1,10 +1,10 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.AppInfo; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.AppInfo; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/QRCodeApi.java b/app/src/main/java/com/uiui/sn/network/api/QRCodeApi.java index 6543e4f..131a68a 100644 --- a/app/src/main/java/com/uiui/sn/network/api/QRCodeApi.java +++ b/app/src/main/java/com/uiui/sn/network/api/QRCodeApi.java @@ -1,9 +1,9 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; public interface QRCodeApi { diff --git a/app/src/main/java/com/uiui/sn/network/api/QueryAllApp.java b/app/src/main/java/com/uiui/sn/network/api/QueryAllApp.java index f101874..80e5d22 100644 --- a/app/src/main/java/com/uiui/sn/network/api/QueryAllApp.java +++ b/app/src/main/java/com/uiui/sn/network/api/QueryAllApp.java @@ -1,12 +1,12 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.AppInfo; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.AppInfo; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; import java.util.List; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/QueryAppInside.java b/app/src/main/java/com/uiui/sn/network/api/QueryAppInside.java index 7aba2f9..f003fd4 100644 --- a/app/src/main/java/com/uiui/sn/network/api/QueryAppInside.java +++ b/app/src/main/java/com/uiui/sn/network/api/QueryAppInside.java @@ -1,9 +1,9 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/QuerySnAppStart.java b/app/src/main/java/com/uiui/sn/network/api/QuerySnAppStart.java index d34d6ad..645ab4c 100644 --- a/app/src/main/java/com/uiui/sn/network/api/QuerySnAppStart.java +++ b/app/src/main/java/com/uiui/sn/network/api/QuerySnAppStart.java @@ -1,12 +1,12 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.AppStart; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.AppStart; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; import java.util.List; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/RunningApp.java b/app/src/main/java/com/uiui/sn/network/api/RunningApp.java index 5a04fe3..cb2bb7c 100644 --- a/app/src/main/java/com/uiui/sn/network/api/RunningApp.java +++ b/app/src/main/java/com/uiui/sn/network/api/RunningApp.java @@ -1,10 +1,10 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.POST; diff --git a/app/src/main/java/com/uiui/sn/network/api/SNInfoApi.java b/app/src/main/java/com/uiui/sn/network/api/SNInfoApi.java index 62e8467..c4d2d82 100644 --- a/app/src/main/java/com/uiui/sn/network/api/SNInfoApi.java +++ b/app/src/main/java/com/uiui/sn/network/api/SNInfoApi.java @@ -1,16 +1,16 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.bean.zuoye.UserInfo; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.bean.SnInfo; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; public interface SNInfoApi { @GET(UrlAddress.SNINFO) - Observable> getsninfo( + Observable> getsninfo( @Query("sn") String sn ); } diff --git a/app/src/main/java/com/uiui/sn/network/api/SaveSnUidApi.java b/app/src/main/java/com/uiui/sn/network/api/SaveSnUidApi.java deleted file mode 100644 index d0b64b2..0000000 --- a/app/src/main/java/com/uiui/sn/network/api/SaveSnUidApi.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.uiui.sn.network.api; - -import com.uiui.sn.bean.zuoye.Response; -import com.uiui.sn.network.UrlAddress; - -import io.reactivex.Observable; -import retrofit2.http.Field; -import retrofit2.http.FormUrlEncoded; -import retrofit2.http.POST; - -public interface SaveSnUidApi { - @FormUrlEncoded - @POST(UrlAddress.POST_USER_SAVESNUID) - Observable saveSnUid( - @Field("sn") String sn, - @Field("uid") String uid, - @Field("grade") int grade, - @Field("card_info") String card_info - ); -} diff --git a/app/src/main/java/com/uiui/sn/network/api/ScreenLock.java b/app/src/main/java/com/uiui/sn/network/api/ScreenLock.java index 4a40463..e598495 100644 --- a/app/src/main/java/com/uiui/sn/network/api/ScreenLock.java +++ b/app/src/main/java/com/uiui/sn/network/api/ScreenLock.java @@ -1,9 +1,9 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/ScreenState.java b/app/src/main/java/com/uiui/sn/network/api/ScreenState.java index 46af373..c0ec2c8 100644 --- a/app/src/main/java/com/uiui/sn/network/api/ScreenState.java +++ b/app/src/main/java/com/uiui/sn/network/api/ScreenState.java @@ -1,9 +1,9 @@ package com.uiui.sn.network.api; import com.uiui.sn.BuildConfig; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.POST; diff --git a/app/src/main/java/com/uiui/sn/network/api/Setting.java b/app/src/main/java/com/uiui/sn/network/api/Setting.java index d45c64f..83cc0cc 100644 --- a/app/src/main/java/com/uiui/sn/network/api/Setting.java +++ b/app/src/main/java/com/uiui/sn/network/api/Setting.java @@ -1,9 +1,9 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/TimeControl.java b/app/src/main/java/com/uiui/sn/network/api/TimeControl.java index ba58bcb..5630005 100644 --- a/app/src/main/java/com/uiui/sn/network/api/TimeControl.java +++ b/app/src/main/java/com/uiui/sn/network/api/TimeControl.java @@ -1,9 +1,9 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.GET; import retrofit2.http.Query; diff --git a/app/src/main/java/com/uiui/sn/network/api/UpdateAdminSn.java b/app/src/main/java/com/uiui/sn/network/api/UpdateAdminSn.java index 4f0f163..92370c4 100644 --- a/app/src/main/java/com/uiui/sn/network/api/UpdateAdminSn.java +++ b/app/src/main/java/com/uiui/sn/network/api/UpdateAdminSn.java @@ -1,9 +1,9 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.POST; diff --git a/app/src/main/java/com/uiui/sn/network/api/UploadScreenshot.java b/app/src/main/java/com/uiui/sn/network/api/UploadScreenshot.java index 2b58b43..db46aea 100644 --- a/app/src/main/java/com/uiui/sn/network/api/UploadScreenshot.java +++ b/app/src/main/java/com/uiui/sn/network/api/UploadScreenshot.java @@ -1,9 +1,9 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import okhttp3.MultipartBody; import retrofit2.http.Multipart; import retrofit2.http.POST; diff --git a/app/src/main/java/com/uiui/sn/network/api/UserInfoApi.java b/app/src/main/java/com/uiui/sn/network/api/UserInfoApi.java index e0e5928..d3888e2 100644 --- a/app/src/main/java/com/uiui/sn/network/api/UserInfoApi.java +++ b/app/src/main/java/com/uiui/sn/network/api/UserInfoApi.java @@ -1,10 +1,10 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.bean.zuoye.UserAvatarInfo; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.bean.UserAvatarInfo; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.POST; diff --git a/app/src/main/java/com/uiui/sn/network/api/UserInfoControl.java b/app/src/main/java/com/uiui/sn/network/api/UserInfoControl.java index f5f41f1..78b9b45 100644 --- a/app/src/main/java/com/uiui/sn/network/api/UserInfoControl.java +++ b/app/src/main/java/com/uiui/sn/network/api/UserInfoControl.java @@ -1,10 +1,10 @@ package com.uiui.sn.network.api; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.bean.zuoye.UserAvatarInfo; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.bean.UserAvatarInfo; import com.uiui.sn.network.UrlAddress; -import io.reactivex.Observable; +import io.reactivex.rxjava3.core.Observable; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.POST; diff --git a/app/src/main/java/com/uiui/sn/receiver/APKinstallReceiver.java b/app/src/main/java/com/uiui/sn/receiver/APKinstallReceiver.java index d764962..726917e 100644 --- a/app/src/main/java/com/uiui/sn/receiver/APKinstallReceiver.java +++ b/app/src/main/java/com/uiui/sn/receiver/APKinstallReceiver.java @@ -2,15 +2,14 @@ package com.uiui.sn.receiver; import android.annotation.SuppressLint; import android.content.BroadcastReceiver; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.text.TextUtils; import android.util.Log; -import com.uiui.sn.config.Configs; +import com.uiui.sn.config.CommonConfig; import com.uiui.sn.network.HTTPInterface; -import com.uiui.sn.service.ManagerService; +import com.uiui.sn.network.NetInterfaceManager; import com.uiui.sn.utils.ApkUtils; import com.uiui.sn.utils.CacheUtils; import com.uiui.sn.utils.JGYUtils; @@ -18,10 +17,10 @@ import com.uiui.sn.utils.SPUtils; import java.util.concurrent.TimeUnit; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.ObservableEmitter; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; public class APKinstallReceiver extends BroadcastReceiver { private static String TAG = APKinstallReceiver.class.getSimpleName(); @@ -71,7 +70,6 @@ public class APKinstallReceiver extends BroadcastReceiver { //启动升级组件 JGYUtils.getInstance().wakeUpUpdateTools(); } - } private void cleanLauncher3Cache() { @@ -98,9 +96,9 @@ public class APKinstallReceiver extends BroadcastReceiver { @Override public void onNext(String s) { - int isLogined = (int) SPUtils.get(mContext, Configs.isLogined, 2); + int isLogined = (int) SPUtils.get(mContext, CommonConfig.isLogined, 2); if (isLogined == 2) return; - HTTPInterface.getAPPinfo(mContext); + NetInterfaceManager.getInstance().SendAppInstallInfo(); HTTPInterface.getForceInstall(mContext); HTTPInterface.getAllappPackage(mContext); HTTPInterface.getAppInside(mContext); diff --git a/app/src/main/java/com/uiui/sn/receiver/BootReceiver.java b/app/src/main/java/com/uiui/sn/receiver/BootReceiver.java index 96b1843..343775f 100644 --- a/app/src/main/java/com/uiui/sn/receiver/BootReceiver.java +++ b/app/src/main/java/com/uiui/sn/receiver/BootReceiver.java @@ -12,10 +12,9 @@ import com.uiui.sn.manager.AmapManager; import com.uiui.sn.network.HTTPInterface; import com.uiui.sn.service.ControlPanelService; import com.uiui.sn.service.GuardService; -import com.uiui.sn.service.MainService; +import com.uiui.sn.service.main.MainService; import com.uiui.sn.service.ManagerService; import com.uiui.sn.service.DownloadService; -import com.uiui.sn.service.RemoteService; import com.uiui.sn.service.StepService; diff --git a/app/src/main/java/com/uiui/sn/receiver/MyJPushReceiver.java b/app/src/main/java/com/uiui/sn/receiver/MyJPushReceiver.java index 5c24957..93aa922 100644 --- a/app/src/main/java/com/uiui/sn/receiver/MyJPushReceiver.java +++ b/app/src/main/java/com/uiui/sn/receiver/MyJPushReceiver.java @@ -26,15 +26,16 @@ import com.android.internal.view.RotationPolicy; import com.arialyy.aria.core.Aria; import com.arialyy.aria.core.download.DownloadEntity; import com.uiui.sn.R; -import com.uiui.sn.bean.zuoye.BaseResponse; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.config.CommonConfig; import com.uiui.sn.dialog.CustomDialog; import com.uiui.sn.jpush.Logger; import com.uiui.sn.manager.ControlManager; import com.uiui.sn.manager.ControlPanelManager; import com.uiui.sn.manager.DeviceManager; -import com.uiui.sn.manager.NetInterfaceManager; +import com.uiui.sn.network.NetInterfaceManager; import com.uiui.sn.network.HTTPInterface; -import com.uiui.sn.service.MainService; +import com.uiui.sn.service.main.MainService; import com.uiui.sn.service.ManagerService; import com.uiui.sn.utils.ApkUtils; import com.uiui.sn.utils.CacheUtils; @@ -53,16 +54,16 @@ import java.util.HashSet; import java.util.List; import cn.jpush.android.api.JPushInterface; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.ObservableSource; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.annotations.NonNull; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.Function; -import io.reactivex.schedulers.Schedulers; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.ObservableEmitter; +import io.reactivex.rxjava3.core.ObservableOnSubscribe; +import io.reactivex.rxjava3.core.ObservableSource; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.functions.Function; +import io.reactivex.rxjava3.schedulers.Schedulers; import okhttp3.MediaType; import okhttp3.MultipartBody; import okhttp3.RequestBody; @@ -564,7 +565,6 @@ public class MyJPushReceiver extends BroadcastReceiver { synchronized private void sendStartTime(Context context, String jsonString) { HTTPInterface.updateAdminInfo(context); HTTPInterface.sendRunningApp(context); - HTTPInterface.sendAppUsed(context); if (JGYUtils.getInstance().isScreenOn()) { HTTPInterface.screenshot(context); } @@ -876,7 +876,7 @@ public class MyJPushReceiver extends BroadcastReceiver { JSONObject jsonObject = JSON.parseObject(jsonString); String is_upgrade = jsonObject.getString("is_upgrade"); String packageName = jsonObject.getString("package"); - String nowApplist = JGYUtils.getString(context.getContentResolver(), "qch_app_forbid"); + String nowApplist = JGYUtils.getString(context.getContentResolver(), CommonConfig.QCH_APP_FORBID); List applist = new ArrayList<>(Arrays.asList(nowApplist.split(","))); if ("0".equals(is_upgrade)) { if (applist.contains(packageName)) { @@ -889,8 +889,8 @@ public class MyJPushReceiver extends BroadcastReceiver { applist.add(packageName); } } - JGYUtils.putString(context.getContentResolver(), "qch_app_forbid", String.join(",", applist)); - Log.e("setAppUpdate", JGYUtils.getString(context.getContentResolver(), "qch_app_forbid")); + JGYUtils.putString(context.getContentResolver(), CommonConfig.QCH_APP_FORBID, String.join(",", applist)); + Log.e("setAppUpdate", JGYUtils.getString(context.getContentResolver(), CommonConfig.QCH_APP_FORBID)); } private void setLock_screen(Context context, String jsonString) { diff --git a/app/src/main/java/com/uiui/sn/rlog/LogBean.java b/app/src/main/java/com/uiui/sn/rlog/LogBean.java new file mode 100644 index 0000000..3302211 --- /dev/null +++ b/app/src/main/java/com/uiui/sn/rlog/LogBean.java @@ -0,0 +1,73 @@ +package com.uiui.sn.rlog; + +import com.uiui.sn.utils.TimeUtils; + +import java.io.Serializable; + +public class LogBean implements Serializable { + private static final long serialVersionUID = -1608434464416521927L; + + Integer id; + String code; + Long timestamp; + String event; + String operate; + String content; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public Long getTimestamp() { + return timestamp; + } + + public void setTimestamp(Long timestamp) { + this.timestamp = timestamp; + } + + public String getEvent() { + return event; + } + + public void setEvent(String event) { + this.event = event; + } + + public String getOperate() { + return operate; + } + + public void setOperate(String operate) { + this.operate = operate; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String toLogString() { + return "执行代码:" + code + + ",时间: " + TimeUtils.transferLongToDate(timestamp) + + ",事件: " + event + + ",操作: " + operate + + ",内容: " + content + ; + } +} diff --git a/app/src/main/java/com/uiui/sn/rlog/LogDBHelper.java b/app/src/main/java/com/uiui/sn/rlog/LogDBHelper.java new file mode 100644 index 0000000..9b69ce6 --- /dev/null +++ b/app/src/main/java/com/uiui/sn/rlog/LogDBHelper.java @@ -0,0 +1,36 @@ +package com.uiui.sn.rlog; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.os.Environment; + +import java.io.File; + +public class LogDBHelper extends SQLiteOpenHelper { + public static final String DATABASE_NAME = "requestlog.db"; + private static final String DATABASE_FILE_NAME = Environment.getExternalStorageDirectory().getPath() + File.separator + DATABASE_NAME; + private static final int DATABASE_VERSION = 1; + + public LogDBHelper(Context context) { + super(context, DATABASE_FILE_NAME, null, DATABASE_VERSION); + } + + @Override + public void onCreate(SQLiteDatabase sqLiteDatabase) { + sqLiteDatabase.execSQL("CREATE TABLE IF NOT EXISTS logtable (" + + "id integer primary key autoincrement," + + "code varchar(8)," + + "timestamp integer," + + "event varchar(64)," + + "operate varchar(64)," + + "content text" + + ")" + ); + } + + @Override + public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { + + } +} diff --git a/app/src/main/java/com/uiui/sn/rlog/LogDBManager.java b/app/src/main/java/com/uiui/sn/rlog/LogDBManager.java new file mode 100644 index 0000000..d6d5459 --- /dev/null +++ b/app/src/main/java/com/uiui/sn/rlog/LogDBManager.java @@ -0,0 +1,207 @@ +package com.uiui.sn.rlog; + +import android.annotation.SuppressLint; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.os.Environment; +import android.util.Log; + +import androidx.core.content.ContextCompat; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class LogDBManager { + @SuppressLint("StaticFieldLeak") + private static LogDBManager sInstance; + private Context mContext; + private LogDBHelper mDBHelper; + + private static final String TABLE_NAME = "logtable"; + private static String TAG = LogDBManager.class.getSimpleName(); + + private LogDBManager(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } + mContext = context; + mDBHelper = new LogDBHelper(context); + } + + public static void init(Context context) { + if (sInstance == null) { + sInstance = new LogDBManager(context); + } + } + + public static LogDBManager getInstance() { + if (sInstance == null) { + throw new IllegalStateException("You must be init LogDBManager first"); + } + return sInstance; + } + + public LogDBHelper getDBHelper() { + if (mDBHelper == null) { + mDBHelper = new LogDBHelper(mContext); + } + return mDBHelper; + } + + private static final String LOG_CODE_REBOOT = "1001"; + private static final String LOG_CODE_NETWORK = "1002"; + private static final String LOG_CODE_NETCHANGE = "1003"; + + private static final String LOG_EVENT_REBOOT = "设备重启"; + private static final String LOG_EVENT_NETWORK = "首次联网"; + private static final String LOG_EVENT_NETCHANGE = "网络改变"; + public static final String LOG_EVENT_BATTERY = "充电改变"; + + public void creatRebootLog(String operate, String content) { + LogBean logBean = new LogBean(); + logBean.setCode(LOG_CODE_REBOOT); + logBean.setTimestamp(System.currentTimeMillis()); + logBean.setEvent(LOG_EVENT_REBOOT); + logBean.setOperate(operate); + logBean.setContent(content); + saveLog(logBean); + } + + public void creatNetworktLog(String operate, String content) { + LogBean logBean = new LogBean(); + logBean.setCode(LOG_CODE_NETWORK); + logBean.setTimestamp(System.currentTimeMillis()); + logBean.setEvent(LOG_EVENT_NETWORK); + logBean.setOperate(operate); + logBean.setContent(content); + saveLog(logBean); + } + + public void creatNetChangeLog(String operate, String content) { + LogBean logBean = new LogBean(); + logBean.setCode(LOG_CODE_NETCHANGE); + logBean.setTimestamp(System.currentTimeMillis()); + logBean.setEvent(LOG_EVENT_NETCHANGE); + logBean.setOperate(operate); + logBean.setContent(content); + saveLog(logBean); + } + + public void creatOtherLog(String event, String operate, String content) { + LogBean logBean = new LogBean(); + logBean.setCode("0000"); + logBean.setTimestamp(System.currentTimeMillis()); + logBean.setEvent(event); + logBean.setOperate(operate); + logBean.setContent(content); + saveLog(logBean); + } + + + public void saveLog(LogBean logBean) { + SQLiteDatabase db = mDBHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("code", logBean.getCode()); + values.put("timestamp", logBean.getTimestamp()); + values.put("event", logBean.getEvent()); + values.put("operate", logBean.getOperate()); + values.put("content", logBean.getContent()); + db.insert(TABLE_NAME, null, values); + } + + public void delete(Integer id) { + SQLiteDatabase db = mDBHelper.getWritableDatabase(); + db.delete(TABLE_NAME, "id=?", new String[]{id.toString()}); + } + + public void deleteAll() { + SQLiteDatabase db = mDBHelper.getWritableDatabase(); + db.delete(TABLE_NAME, "", null); + } + + public void update(LogBean logBean) { + SQLiteDatabase db = mDBHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("code", logBean.getCode()); + values.put("timestamp", logBean.getTimestamp()); + values.put("event", logBean.getEvent()); + values.put("operate", logBean.getOperate()); + values.put("content", logBean.getContent()); + db.update(TABLE_NAME, values, "id=?", new String[]{logBean.getId().toString()}); + } + + private long aWeekDayTime = 1000 * 60 * 60 * 24 * 7; + + public List getLogList() { + List logBeanList = new ArrayList<>(); + SQLiteDatabase db = mDBHelper.getReadableDatabase(); + long time = System.currentTimeMillis() - aWeekDayTime; + String sql = "select * from " + TABLE_NAME + " where" + " timestamp > " + time; + Cursor cursor = null; + try { + cursor = db.rawQuery(sql, null); + while (cursor.moveToNext()) { + LogBean logBean = new LogBean(); + logBean.setId(cursor.getInt(cursor.getColumnIndex("id"))); + logBean.setCode(cursor.getString(cursor.getColumnIndex("code"))); + logBean.setTimestamp(cursor.getLong(cursor.getColumnIndex("timestamp"))); + logBean.setEvent(cursor.getString(cursor.getColumnIndex("event"))); + logBean.setOperate(cursor.getString(cursor.getColumnIndex("operate"))); + logBean.setContent(cursor.getString(cursor.getColumnIndex("content"))); + logBeanList.add(logBean); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (cursor != null) { + cursor.close(); + } + db.close(); + } + return logBeanList; + } + + public String saveToFile() { + List logBeanList = getLogList(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd-HH_mm_ss"); + Date date = new Date(System.currentTimeMillis()); + String fileName = sdf.format(date) + " log.txt"; + String filePath = ContextCompat.getExternalFilesDirs(mContext, Environment.DIRECTORY_DOCUMENTS)[0].getAbsolutePath() + + File.separator + fileName; + File logFile = new File(filePath); + if (logFile.exists()) { + logFile.delete(); + } + StringBuilder stringBuilder = new StringBuilder(); + for (LogBean logBean : logBeanList) { + stringBuilder.append(logBean.toLogString()).append("\n"); + } + byte[] bs = stringBuilder.toString().getBytes(); + try { + OutputStream out = new FileOutputStream(logFile); + InputStream is = new ByteArrayInputStream(bs); + byte[] buff = new byte[1024]; + int len = 0; + while ((len = is.read(buff)) != -1) { + out.write(buff, 0, len); + } + is.close(); + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + Log.e(TAG, "saveToFile: " + logFile.getAbsolutePath()); + return logFile.getAbsolutePath(); + } + +} diff --git a/app/src/main/java/com/uiui/sn/service/DownloadService.java b/app/src/main/java/com/uiui/sn/service/DownloadService.java index 4608200..da06c83 100644 --- a/app/src/main/java/com/uiui/sn/service/DownloadService.java +++ b/app/src/main/java/com/uiui/sn/service/DownloadService.java @@ -21,7 +21,9 @@ import com.arialyy.aria.core.task.DownloadTask; import com.blankj.utilcode.util.ToastUtils; import com.uiui.sn.KeepAliveConnection; import com.uiui.sn.R; +import com.uiui.sn.service.main.MainService; import com.uiui.sn.utils.ApkUtils; +import com.uiui.sn.utils.JGYUtils; import java.io.File; @@ -142,4 +144,19 @@ public class DownloadService extends Service { Log.e("taskComplete", task.getExtendField()); Aria.download(this).load(task.getDownloadEntity().getId()).cancel(); } + + @Download.onTaskFail + void taskFail(DownloadTask task, Exception e) { + Aria.download(this).resumeAllTask(); + final String filepath = task.getFilePath(); + final String packageName = task.getExtendField(); + Log.e("aria", "taskFail: " + packageName + "filepath: " + filepath + "Exception: " + e.getMessage()); + +// Aria.download(this) +// .load(task.getDownloadEntity().getRealUrl()) //读取下载地址 +// .setFilePath(task.getFilePath()) +// .ignoreFilePathOccupy() +// .setExtendField(task.getExtendField()) +// .create(); //启动下载} + } } diff --git a/app/src/main/java/com/uiui/sn/service/MainService.java b/app/src/main/java/com/uiui/sn/service/MainService.java deleted file mode 100644 index 8ea4389..0000000 --- a/app/src/main/java/com/uiui/sn/service/MainService.java +++ /dev/null @@ -1,413 +0,0 @@ -package com.uiui.sn.service; - -import android.app.Service; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.graphics.Bitmap; -import android.os.IBinder; -import android.os.SystemClock; -import android.provider.Settings; -import android.text.TextUtils; -import android.util.Log; - -import com.alibaba.fastjson.JSONObject; -import com.blankj.utilcode.util.NetworkUtils; -import com.uiui.sn.activity.main.MainActivity; -import com.uiui.sn.activity.main.MainContact; -import com.uiui.sn.activity.main.MainPresenter; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.bean.zuoye.UserInfo; -import com.uiui.sn.bean.gankao.AvailableProduct; -import com.uiui.sn.config.Configs; -import com.uiui.sn.jpush.TagAliasOperatorHelper; -import com.uiui.sn.manager.ControlManager; -import com.uiui.sn.network.HTTPInterface; -import com.uiui.sn.utils.SPUtils; -import com.uiui.sn.utils.ToastUtil; -import com.uiui.sn.utils.Utils; -import com.trello.rxlifecycle2.LifecycleProvider; -import com.trello.rxlifecycle2.LifecycleTransformer; -import com.trello.rxlifecycle2.RxLifecycle; -import com.trello.rxlifecycle2.android.ActivityEvent; -import com.trello.rxlifecycle2.android.RxLifecycleAndroid; - -import org.jetbrains.annotations.NotNull; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.concurrent.TimeUnit; - -import cn.jpush.android.api.JPushInterface; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.Observer; -import io.reactivex.disposables.Disposable; -import io.reactivex.subjects.BehaviorSubject; - -import static com.uiui.sn.jpush.TagAliasOperatorHelper.ACTION_SET; - -/** - * @author jgy02 - */ -public class MainService extends Service implements MainContact.MainView, NetworkUtils.OnNetworkStatusChangedListener, LifecycleProvider { - private String TAG = MainService.class.getSimpleName(); - public static MainPresenter mPresenter; - - //执行所有请求的时间 - long runningTime = 0; - - //MainService上次执行时间 - long startCommandTime = 0; - - private final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); - - @NotNull - @Override - public Observable lifecycle() { - return lifecycleSubject.hide(); - } - - @NotNull - @Override - public LifecycleTransformer bindUntilEvent(@NotNull ActivityEvent event) { - return RxLifecycle.bindUntilEvent(lifecycleSubject, event); - } - - @NotNull - @Override - public LifecycleTransformer bindToLifecycle() { - return RxLifecycleAndroid.bindActivity(lifecycleSubject); - } - - @Override - public void onDisconnected() { - Log.e(TAG, "网络未连接"); - ToastUtil.show("网络未连接"); - } - - @Override - public void onConnected(NetworkUtils.NetworkType networkType) { - mPresenter.getUserInfo(); - HTTPInterface.checkUpdate(this); - Log.e(TAG, "网络已连接"); - ToastUtil.show("网络已连接"); - Log.e(TAG, "onConnected: wifi ssid = " + Utils.getWifiSSID(this)); - SPUtils.put(this, "wifi_last_connect_time", System.currentTimeMillis()); - mPresenter.checkUpdate(); - } - - private interface Start { - void onstar(long time); - } - - private Start start; - - private final ObservableOnSubscribe subscribe = new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter emitter) throws Exception { - start = new Start() { - @Override - public void onstar(long time) { - emitter.onNext(time); - } - }; - } - }; - - private Observer timeObserver = new Observer() { - @Override - public void onSubscribe(Disposable d) { - - } - - @Override - public void onNext(Long aLong) { - Log.e("TimeObserver", "onNext: $aLong"); - startCommandTime = runningTime = SystemClock.elapsedRealtime(); - mPresenter.checkUpdate(); - mPresenter.initAmap(); - mPresenter.getUserInfo(); - HTTPInterface.sendAppUsed(MainService.this); - HTTPInterface.sendRunningApp(MainService.this); - HTTPInterface.getAPPinfo(MainService.this); - startService(); - mPresenter.setAlias(); - } - - @Override - public void onError(Throwable e) { - - } - - @Override - public void onComplete() { - - } - }; - - @Override - public IBinder onBind(Intent intent) { - return null; - } - - @Override - public void onCreate() { - super.onCreate(); - lifecycleSubject.onNext(ActivityEvent.CREATE); - JPushInterface.init(this); - mPresenter = new MainPresenter(this); - mPresenter.setProvider(this); - mPresenter.attachView(this); - NetworkUtils.registerNetworkStatusChangedListener(this); - Observable.create(subscribe) - .throttleFirst(60, TimeUnit.SECONDS) - .subscribe(timeObserver); - PackageManager packageManager = getPackageManager(); - try { -// packageManager.setApplicationEnabledSetting("com.jiaoguanyi.appstore", PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0) -// packageManager.setApplicationEnabledSetting("com.jiaoguanyi.store", PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0) - } catch (Exception e) { - Log.e(TAG, "onCreate: " + e.getMessage()); - } - ControlManager.getInstance().setDefaultUSBstate(); - mPresenter.setAlias(); - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - JPushInterface.init(this); - if (MainActivity.isForeground) { - Log.e(TAG, "onStartCommand: MainActivity: isForeground: " + MainActivity.isForeground); - } else { - JPushInterface.init(this); - start.onstar(startCommandTime); - Log.e(TAG, "onStartCommand: " + (SystemClock.elapsedRealtime() - startCommandTime) + "ms"); - } - return START_STICKY; - } - - @Override - public void onDestroy() { - super.onDestroy(); - lifecycleSubject.onNext(ActivityEvent.DESTROY); - NetworkUtils.unregisterNetworkStatusChangedListener(this); - mPresenter.detachView(); - } - - private void startService() { - startService(new Intent(this, GuardService.class)); - startService(new Intent(this, StepService.class)); - startService(new Intent(this, DownloadService.class)); - } - - public static MainPresenter getPresenter() { - return mPresenter; - } - - @Override - public void setPowerUserList(String date) { - - } - - @Override - public void checkSNFinish(int code) { - - } - - @Override - public void setGankaoUID(String gankaoUID) { - - } - - @Override - public void setAvailableProduct(List availableProductList, String gankaoUID) { - - } - - @Override - public void activeUserFinish(int code) { - - } - - @Override - public void setAlias() { - setJpushAlias(); - Log.e(TAG, "setAlias: " + "finish"); - mPresenter.getBatch(); - } - - private void setJpushAlias() { - String alias = Utils.getSerial(); - TagAliasOperatorHelper.TagAliasBean tagAliasBean = new TagAliasOperatorHelper.TagAliasBean(); - tagAliasBean.action = ACTION_SET; - TagAliasOperatorHelper.sequence++; - tagAliasBean.alias = alias; - tagAliasBean.isAliasAction = true; - TagAliasOperatorHelper.getInstance().handleAction(this, TagAliasOperatorHelper.sequence, tagAliasBean); - } - - private void setTag(Set set) { - TagAliasOperatorHelper.TagAliasBean tagAliasBean = new TagAliasOperatorHelper.TagAliasBean(); - tagAliasBean.action = ACTION_SET; - TagAliasOperatorHelper.sequence++; - tagAliasBean.tags = set; - tagAliasBean.isAliasAction = false; - TagAliasOperatorHelper.getInstance().handleAction(this, TagAliasOperatorHelper.sequence, tagAliasBean); - } - - @Override - public void setBatch(String batch) { - HashSet hashSet = new HashSet(); - hashSet.add(batch); - hashSet.removeIf(o -> TextUtils.isEmpty(o.toString())); - if (hashSet.size() != 0) { - setTag(hashSet); - } else { - Log.e(TAG, "setBatch: " + "hashSet size is 0"); - } - } - - @Override - public void setQRCode(Bitmap bitmap) { - - } - - @Override - public void setSnInfo(BaseResponse response) { - if (response != null) { - int code = response.code; - //设备已经绑定 - if (code == 200) { - UserInfo userInfo = response.data; - boolean username = Settings.System.putString(getContentResolver(), "UserInfo_username", userInfo.getSn_name()); - boolean gread = Settings.System.putString(getContentResolver(), "UserInfo_grade", userInfo.getGrade()); - SPUtils.put(this, "member_id", userInfo.getMember_id()); - SPUtils.put(this, "sn_id", userInfo.getId()); - if (!TextUtils.isEmpty(userInfo.getSn_name())) { - SPUtils.put(this, "USERINFO_NAME", userInfo.getSn_name()); - } - if (!TextUtils.isEmpty(userInfo.getSchool())) { - SPUtils.put(this, "USERINFO_SCHOOL", userInfo.getSchool()); - } - if (!TextUtils.isEmpty(userInfo.getGrade())) { - SPUtils.put(this, "USERINFO_GRADE", userInfo.getGrade()); - } - - mPresenter.getLocked(); - } - //设备没有绑定 - else if (code == 300) { - ControlManager.getInstance().setDisableSetting(); - } - //没有授权的设备 - else if (code == 400) { - ControlManager.getInstance().setDisableSetting(); - } - } - mPresenter.getSnUid(); - } - - @Override - public void setSnUid(JSONObject jsonObject) { - if (jsonObject != null) { - String uid = jsonObject.getString("uid"); - if (!TextUtils.isEmpty(uid)) { - Settings.System.putString(getContentResolver(), "gankaoUID", uid); - } -// String uid = jsonObject.getString("uid"); -// long activate_time = jsonObject.getLong("activate_time"); -// String card_info = jsonObject.getString("card_info"); -// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); -// Date d1 = new Date(activate_time * 1000); -// int grade = jsonObject.getIntValue("grade"); -// SPUtils.put(MainService.this, "int_grade", grade); -// String t1 = format.format(d1); - } else { - mPresenter.registerGankao(); - } - } - - @Override - public void setGankao(String gankaoUID) { - - } - - @Override - public void setUserInfo() { - mPresenter.getSnInfo(); - } - - @Override - public void setLocked(int lockedStatus) { - switch (lockedStatus) { - case 0: - ControlManager.getInstance().setDisableSetting(); - break; - case 1: - break; - case 2: - ControlManager.getInstance().setDisableSetting(); - break; - default: - break; - } - mPresenter.checkUpdate(); - } - - @Override - public void onLocationChanged() { - HTTPInterface.updateAdminInfo(this); - } - - @Override - public void checkUpdateFinish() { - mPresenter.getAllApp(); - } - - @Override - public void getAllAppFinish() { - mPresenter.getAppInside(); - } - - @Override - public void setAppInside() { - mPresenter.getForceInstall(); - } - - @Override - public void setForceInstall() { - mPresenter.getSystemSettings(); - } - - @Override - public void setSystemSettings() { - mPresenter.getBrowserLabel(); - } - - @Override - public void setBrowserLabel() { - mPresenter.getBrowserWhiteList(); - } - - @Override - public void setBrowserWhiteList() { - mPresenter.getAppStart(); - } - - @Override - public void setAppStart() { - mPresenter.getTimeControl(); - } - - @Override - public void setTimeControl() { - mPresenter.getScreenLock(); - } - - @Override - public void setScreenLock() { - - } -} diff --git a/app/src/main/java/com/uiui/sn/service/ManagerService.java b/app/src/main/java/com/uiui/sn/service/ManagerService.java index 05b0083..8a1c07d 100644 --- a/app/src/main/java/com/uiui/sn/service/ManagerService.java +++ b/app/src/main/java/com/uiui/sn/service/ManagerService.java @@ -8,7 +8,6 @@ import android.content.IntentFilter; import android.graphics.Color; import android.graphics.PixelFormat; import android.os.Build; -import android.os.Handler; import android.os.IBinder; import android.provider.Settings; import android.text.TextUtils; @@ -24,27 +23,25 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.blankj.utilcode.util.NetworkUtils; import com.uiui.sn.R; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.config.Configs; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.config.CommonConfig; import com.uiui.sn.manager.ControlManager; -import com.uiui.sn.manager.NetInterfaceManager; -import com.uiui.sn.network.HTTPInterface; +import com.uiui.sn.network.NetInterfaceManager; import com.uiui.sn.receiver.APKinstallReceiver; import com.uiui.sn.receiver.BootReceiver; -import com.uiui.sn.utils.JGYUtils; import com.uiui.sn.utils.SPUtils; import com.uiui.sn.utils.TimeUtils; import com.uiui.sn.utils.Utils; import java.util.concurrent.TimeUnit; -import io.reactivex.Observable; -import io.reactivex.ObservableEmitter; -import io.reactivex.ObservableOnSubscribe; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.ObservableEmitter; +import io.reactivex.rxjava3.core.ObservableOnSubscribe; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; /** @@ -99,14 +96,10 @@ public class ManagerService extends Service implements NetworkUtils.OnNetworkSta @Override public void onNext(Long aLong) { Log.e("TimeObserver", "onNext: " + aLong); - int isLogined = (int) SPUtils.get(ManagerService.this, Configs.isLogined, 2); - if (isLogined == 2) return; - Handler.getMain().postDelayed(() -> HTTPInterface.checkUpdate(ManagerService.this), 1234); - Handler.getMain().postDelayed(() -> HTTPInterface.checkUpdate(ManagerService.this, JGYUtils.PACKAGE_APPSTORE), 2345); - Handler.getMain().postDelayed(() -> HTTPInterface.checkUpdate(ManagerService.this, JGYUtils.PACKAGE_BROWSER), 3456); - Handler.getMain().postDelayed(() -> HTTPInterface.checkUpdate(ManagerService.this, JGYUtils.PACKAGE_OS), 5678); - Handler.getMain().postDelayed(() -> HTTPInterface.checkUpdate(ManagerService.this, JGYUtils.PACKAGE_VIDEOPLAYER), 6789); + int isLogined = (int) SPUtils.get(ManagerService.this, CommonConfig.isLogined, 2); + if (isLogined == 2) { + } } @Override diff --git a/app/src/main/java/com/uiui/sn/service/RemoteService.java b/app/src/main/java/com/uiui/sn/service/RemoteService.java index 8395351..31e70b3 100644 --- a/app/src/main/java/com/uiui/sn/service/RemoteService.java +++ b/app/src/main/java/com/uiui/sn/service/RemoteService.java @@ -9,6 +9,7 @@ import android.util.Log; import com.google.gson.JsonObject; import com.uiui.sn.IGetInfoInterface; +import com.uiui.sn.service.main.MainService; import com.uiui.sn.utils.JGYUtils; import com.uiui.sn.utils.SPUtils; import com.uiui.sn.utils.Utils; @@ -47,12 +48,11 @@ public class RemoteService extends Service { @Override public String getUserInfo() throws RemoteException { - if (MainService.mPresenter != null) { - MainService.mPresenter.getUserInfo(); + if (MainService.getPresenter() != null) { +// MainService.getPresenter().getUserInfo(); } String username = Settings.System.getString(getContentResolver(), "UserInfo_username"); String avatar = Settings.System.getString(getContentResolver(), "UserInfo_avatar"); -// String gread = Settings.System.getString(getContentResolver(), "UserInfo_grade"); int gread = (int) SPUtils.get(RemoteService.this, "int_grade", 0); String gankaoUID = Settings.System.getString(getContentResolver(), "gankaoUID"); JsonObject jsonObject = new JsonObject(); diff --git a/app/src/main/java/com/uiui/sn/service/main/MainSContact.java b/app/src/main/java/com/uiui/sn/service/main/MainSContact.java new file mode 100644 index 0000000..e42517c --- /dev/null +++ b/app/src/main/java/com/uiui/sn/service/main/MainSContact.java @@ -0,0 +1,52 @@ +package com.uiui.sn.service.main; + +import com.alibaba.fastjson.JSONObject; +import com.uiui.sn.base.BasePresenter; +import com.uiui.sn.base.BaseView; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.bean.SnInfo; + +public class MainSContact { + public interface MainView extends BaseView { + void setSnInfo(BaseResponse response); + void setLocked(int lockedStatus); + void checkUpdateFinish(); + void getAllAppFinish(); + void setAppInside(); + void setForceInstall(); + void setSystemSettings(); + void setBrowserLabel(); + void setBrowserWhiteList(); + void setAppStart(); + void setTimeControl(); + void setScreenLock(); + } + + interface Presenter extends BasePresenter { + //获取设备信息 + void getSnInfo(); + //获取锁定状态 + void getLocked(); + //检查更新 + void checkUpdate(); + //获取所有app包名 + void getAllApp(); + //获取id管控 + void getAppInside(); + //获取强制下载 + void getForceInstall(); + //获取系统设置 + void getSystemSettings(); + //获取浏览器书签 + void getBrowserLabel(); + //获取浏览器黑白名单 + void getBrowserWhiteList(); + //应用自启 + void getAppStart(); + //获取时间管控 + void getTimeControl(); + //获取锁屏管控 + void getScreenLock(); + + } +} diff --git a/app/src/main/java/com/uiui/sn/activity/main/MainPresenter.java b/app/src/main/java/com/uiui/sn/service/main/MainSPresenter.java similarity index 54% rename from app/src/main/java/com/uiui/sn/activity/main/MainPresenter.java rename to app/src/main/java/com/uiui/sn/service/main/MainSPresenter.java index 22594d7..baa9163 100644 --- a/app/src/main/java/com/uiui/sn/activity/main/MainPresenter.java +++ b/app/src/main/java/com/uiui/sn/service/main/MainSPresenter.java @@ -1,11 +1,9 @@ -package com.uiui.sn.activity.main; +package com.uiui.sn.service.main; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -import android.graphics.Bitmap; import android.os.Build; -import android.os.Handler; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; @@ -16,84 +14,68 @@ import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationClient; import com.amap.api.location.AMapLocationListener; import com.google.gson.Gson; -import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.google.gson.reflect.TypeToken; -import com.uiui.sn.bean.gankao.AvailableProduct; -import com.uiui.sn.bean.gankao.CreateUserBean; -import com.uiui.sn.bean.gankao.GankaoBaseResponse; -import com.uiui.sn.bean.gankao.PowerUser; -import com.uiui.sn.bean.zuoye.AppInfo; -import com.uiui.sn.bean.zuoye.AppStart; -import com.uiui.sn.bean.zuoye.BaseResponse; -import com.uiui.sn.bean.zuoye.Label; -import com.uiui.sn.bean.zuoye.browser.BrowserApiData; -import com.uiui.sn.bean.zuoye.browser.BrowserBean; -import com.uiui.sn.bean.zuoye.UserAvatarInfo; -import com.uiui.sn.bean.zuoye.UserInfo; -import com.uiui.sn.config.Configs; -import com.uiui.sn.config.Scheme; +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiui.sn.bean.AppInfo; +import com.uiui.sn.bean.AppStart; +import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.bean.Label; +import com.uiui.sn.bean.UserAvatarInfo; +import com.uiui.sn.bean.SnInfo; +import com.uiui.sn.bean.browser.BrowserApiData; +import com.uiui.sn.bean.browser.BrowserBean; +import com.uiui.sn.config.CommonConfig; import com.uiui.sn.manager.AmapManager; import com.uiui.sn.manager.ControlManager; -import com.uiui.sn.manager.NetInterfaceManager; import com.uiui.sn.network.HTTPInterface; +import com.uiui.sn.network.NetInterfaceManager; import com.uiui.sn.service.ManagerService; import com.uiui.sn.utils.ApkUtils; -import com.uiui.sn.utils.CXAESUtil; import com.uiui.sn.utils.JGYUtils; -import com.uiui.sn.utils.LaunchTools; import com.uiui.sn.utils.SPUtils; import com.uiui.sn.utils.ServiceAliveUtils; import com.uiui.sn.utils.TimeUtils; -import com.uiui.sn.utils.ToastUtil; import com.uiui.sn.utils.URLUtils; import com.uiui.sn.utils.Utils; -import com.trello.rxlifecycle2.LifecycleProvider; -import com.trello.rxlifecycle2.android.ActivityEvent; -import org.jetbrains.annotations.NotNull; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.stream.Collectors; -import io.reactivex.Observer; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.schedulers.Schedulers; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; +import io.reactivex.rxjava3.subjects.BehaviorSubject; import static com.uiui.sn.service.ManagerService.LOCK_STATE; /** * @author jgy02 */ -public class MainPresenter implements MainContact.Presenter { - private String TAG; +public class MainSPresenter implements MainSContact.Presenter { + private String TAG = MainSPresenter.class.getSimpleName(); - private MainContact.MainView mView; + private MainSContact.MainView mView; private Context mContext; - public MainPresenter(Context context) { + public MainSPresenter(Context context) { this.mContext = context; - TAG = context.getClass().getSimpleName() + "." + MainPresenter.class.getSimpleName() + ":"; } - private LifecycleProvider provider; + private BehaviorSubject lifecycle; - public void setProvider(LifecycleProvider provider) { - this.provider = provider; + public void setLifecycle(BehaviorSubject lifecycle) { + this.lifecycle = lifecycle; } - public LifecycleProvider getProvider() { - return provider; + public BehaviorSubject getLifecycle() { + return lifecycle; } @Override - public void attachView(MainContact.MainView view) { + public void attachView(MainSContact.MainView view) { this.mView = view; } @@ -102,300 +84,38 @@ public class MainPresenter implements MainContact.Presenter { this.mView = null; } - - @Override - public void queryPowerUserList() { - - } - - @Override - public void checkSN() { - NetInterfaceManager.getInstance() - .getsnInfoControl() - .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY)) - .subscribe(new Observer>() { - @Override - public void onSubscribe(Disposable d) { - Log.e(TAG + "checkSN", "onSubscribe: "); - } - - @Override - public void onNext(BaseResponse userInfoBaseResponse) { - Log.e(TAG + "checkSN", "onNext: "); - int code = userInfoBaseResponse.code; - mView.checkSNFinish(code); - } - - @Override - public void onError(Throwable e) { - Log.e(TAG + "checkSN", "onError: " + e.getMessage()); - mView.checkSNFinish(404); - onComplete(); - } - - @Override - public void onComplete() { - - Log.e(TAG + TAG + "checkSN", "onComplete: "); - } - }); - } - - /** - * 创建赶考账户 - */ - @Override - public void getGankaoUID() { - - } - - - @Override - public void queryAvailableProduct(String gankaoUID) { - - } - - @Override - public void activeUser(@NotNull AvailableProduct product, String gankaoUID) { - - } - - @Override - public void setAlias() { - mView.setAlias(); - } - - @Override - public void getBatch() { - NetInterfaceManager.getInstance() - .getBatchApiControl() - .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY)) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - Log.e("getBatch", "onSubscribe: "); - } - - @Override - public void onNext(BaseResponse baseResponse) { - Log.e("getBatch", "onNext: "); - if (baseResponse.code == 200) { - Gson gson = new Gson(); - JsonObject jsonObject = JsonParser.parseString(gson.toJson(baseResponse.data)).getAsJsonObject(); - int batch_id = jsonObject.get("batch_id").getAsInt(); - Log.e("getBatch", "onNext: " + batch_id); - mView.setBatch(String.valueOf(batch_id)); - } else { - Log.e("getBatch", "onNext: " + baseResponse.msg); - mView.setBatch(""); - } - } - - @Override - public void onError(Throwable e) { - Log.e("getBatch", "onError: " + e.getMessage()); - mView.setBatch(""); - onComplete(); - } - - @Override - public void onComplete() { - Log.e("getBatch", "onComplete: "); - } - }); - } - - @Override - public void getQRCode() { - String encryptString = CXAESUtil.encrypt(Configs.AES_KEY, Utils.getSerial()); - Log.e(TAG + TAG, "setImageAndText: " + encryptString); - Bitmap bitmap = Utils.createQRImage(encryptString, 400, 400); - mView.setQRCode(bitmap); - } - - private static final String UPDATE_USER_INFO = "UPDATE_USER_INFO"; - @Override public void getSnInfo() { NetInterfaceManager.getInstance() - .getsnInfoControl() - .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY)) - .subscribe(new Observer>() { + .getSnInfo(lifecycle, new NetInterfaceManager.ObserverCallback() { @Override public void onSubscribe(Disposable d) { - Log.e(TAG + "getInfo", "onSubscribe: "); + } @Override - public void onNext(BaseResponse userInfoBaseResponse) { - Log.e(TAG + "getInfo", "onNext: " + userInfoBaseResponse); - mView.setSnInfo(userInfoBaseResponse); - int code = userInfoBaseResponse.code; - if (code == 200) { - SPUtils.put(mContext, Configs.isLogined, 1); - UserInfo userInfo = userInfoBaseResponse.data; - Settings.System.putString(mContext.getContentResolver(), "UserInfo_username", userInfo.getSn_name()); - Settings.System.putString(mContext.getContentResolver(), "UserInfo_grade", userInfo.getGrade()); - SPUtils.put(mContext, "member_id", userInfo.getMember_id()); - SPUtils.put(mContext, "sn_id", userInfo.getId()); - if (!TextUtils.isEmpty(userInfo.getSn_name())) { - SPUtils.put(mContext, "USERINFO_NAME", userInfo.getSn_name()); - } - if (!TextUtils.isEmpty(userInfo.getSchool())) { - SPUtils.put(mContext, "USERINFO_SCHOOL", userInfo.getSchool()); - } - if (!TextUtils.isEmpty(userInfo.getGrade())) { - SPUtils.put(mContext, "USERINFO_GRADE", userInfo.getGrade()); - } - String gankaoUID = Settings.System.getString(mContext.getContentResolver(), "gankaoUID"); - String avatar = Settings.System.getString(mContext.getContentResolver(), "UserInfo_avatar"); - int gread = (int) SPUtils.get(mContext, "int_grade", 0); - - JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("username", userInfo.getSn_name()); - jsonObject.addProperty("avatar", avatar); - jsonObject.addProperty("grade", gread); - jsonObject.addProperty("userid", gankaoUID); - jsonObject.addProperty("sn", Utils.getSerial()); - Log.e(TAG, "getUserInfo:" + jsonObject.toString()); - Intent intent = new Intent(UPDATE_USER_INFO); - intent.putExtra("user_info", jsonObject.toString()); - intent.setPackage("com.jiaoguanyi.os"); - intent.setPackage("com.tt.ttutils"); - mContext.sendBroadcast(intent); - } else if (code == 300) { - SPUtils.put(mContext, Configs.isLogined, 0); - } else if (code == 400) { - SPUtils.put(mContext, Configs.isLogined, 2); - } + public void onNext(BaseResponse response) { + mView.setSnInfo(response); } @Override public void onError(Throwable e) { - Log.e(TAG + "getInfo", "onError: " + e.getMessage()); - mView.setSnInfo(null); - onComplete(); + } @Override public void onComplete() { - Log.e(TAG + "getInfo", "onComplete: "); - int isLogined = (int) SPUtils.get(mContext, Configs.isLogined, 2); - if (isLogined == 2) return; - Handler.getMain().postDelayed(() -> HTTPInterface.checkUpdate(mContext), 1234); - Handler.getMain().postDelayed(() -> HTTPInterface.checkUpdate(mContext, JGYUtils.PACKAGE_APPSTORE), 2345); - Handler.getMain().postDelayed(() -> HTTPInterface.checkUpdate(mContext, JGYUtils.PACKAGE_BROWSER), 3456); - Handler.getMain().postDelayed(() -> HTTPInterface.checkUpdate(mContext, JGYUtils.PACKAGE_OS), 5678); - Handler.getMain().postDelayed(() -> HTTPInterface.checkUpdate(mContext, JGYUtils.PACKAGE_VIDEOPLAYER), 6789); - } - }); - } - @Override - public void getSnUid() { - NetInterfaceManager.getInstance() - .getSnUidApiControl() - .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY)) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - Log.e("getSnUid", "onSubscribe: "); - } - - @Override - public void onNext(BaseResponse baseResponse) { - Log.e("getSnUid", "onNext: " + JSONObject.toJSONString(baseResponse)); - int code = baseResponse.code; - if (code == 200) { - Settings.System.putInt(mContext.getContentResolver(), MainActivity.activation, 1); - JSONObject jsonObject = JSON.parseObject(JSONObject.toJSONString(baseResponse.data)); - mView.setSnUid(jsonObject); - } else { - mView.setSnUid(null); - } - } - - @Override - public void onError(Throwable e) { - Log.e("getSnUid", "onError: " + e.getMessage()); - mView.setSnUid(null); - } - - @Override - public void onComplete() { - Log.e("getSnUid", "onComplete: "); - } - }); - } - - @Override - public void registerGankao() { - - } - - @Override - public void getUserInfo() { - NetInterfaceManager.getInstance() - .getUserAvatarInfoControl() - .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY)) - .subscribe(new Observer>() { - @Override - public void onSubscribe(Disposable d) { - Log.e(TAG + "getUserInfo", "onSubscribe: "); - } - - @Override - public void onNext(BaseResponse userAvatarInfoBaseResponse) { - Log.e(TAG + "getUserInfo", "onNext: "); - if (userAvatarInfoBaseResponse.code == 200) { - UserAvatarInfo info = userAvatarInfoBaseResponse.data; - if (!TextUtils.isEmpty(info.getUsername())) { - Log.e(TAG + "getUserInfo", "onNext: " + " " + info.getUsername()); - } - if (!TextUtils.isEmpty(info.getAvatar())) { - boolean avatar = Settings.System.putString(mContext.getContentResolver(), "UserInfo_avatar", info.getAvatar()); - Log.e(TAG + "getUserInfo", "onNext: " + avatar + " " + info.getAvatar()); - } - if (!TextUtils.isEmpty(info.getGread())) { - Log.e(TAG + "getUserInfo", "onNext: " + " " + info.getGread()); - } - boolean id = Settings.System.putInt(mContext.getContentResolver(), "UserInfo_userid", info.getId()); - Log.e(TAG + "getUserInfo", "onNext: " + id + " " + info.getId()); - } - } - - @Override - public void onError(Throwable e) { - Log.e(TAG + "getUserInfo", "onError: " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.e(TAG + "getUserInfo", "onComplete: "); - mView.setUserInfo(); } }); } @Override public void getLocked() { - int statu = (int) SPUtils.get(mContext, Configs.isLogined, 0); + int statu = (int) SPUtils.get(mContext, CommonConfig.isLogined, 0); mView.setLocked(statu); } - @Override - public void initAmap() { - AMapLocationClient aMapLocationClient = AmapManager.getInstance().getLocationClient(); - aMapLocationClient.stopLocation(); - aMapLocationClient.startLocation(); - aMapLocationClient.setLocationListener(new AMapLocationListener() { - @Override - public void onLocationChanged(AMapLocation aMapLocation) { - mView.onLocationChanged(); - } - }); - } - @Override public void checkUpdate() { mView.checkUpdateFinish(); @@ -406,16 +126,16 @@ public class MainPresenter implements MainContact.Presenter { public void getAllApp() { NetInterfaceManager.getInstance() .getQueryAllAppControl() - .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY)) + .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) .subscribe(new Observer>>() { @Override public void onSubscribe(Disposable d) { - Log.e(TAG + "getAllApp", "onSubscribe: "); + Log.e("getAllApp", "onSubscribe: "); } @Override public void onNext(BaseResponse> listBaseResponse) { - Log.e(TAG + "getAllApp", "onNext: "); + Log.e("getAllApp", "onNext: " + listBaseResponse); int code = listBaseResponse.code; if (code == 200) { List appInfoList = listBaseResponse.data; @@ -427,8 +147,8 @@ public class MainPresenter implements MainContact.Presenter { allPkgSet.add(pkg.getApp_package()); } String allPkgString = String.join(",", allPkgSet); - Settings.System.putString(mContext.getContentResolver(), "only_jgy_shortcut_list", allPkgString); - Log.e(TAG + "getAllApp", "onNext: " + allPkgString); + Settings.System.putString(mContext.getContentResolver(), CommonConfig.ONLY_SHORTCUT_LIST, allPkgString); + Log.e("getAllApp", "onNext: " + allPkgString); ApkUtils.writeAppPackageList(mContext, allPkgString); HTTPInterface.getAppStart(mContext, appInfoList); } @@ -438,13 +158,13 @@ public class MainPresenter implements MainContact.Presenter { @Override public void onError(Throwable e) { - Log.e(TAG + "getAllApp", "onError: " + e.getMessage()); + Log.e("getAllApp", "onError: " + e.getMessage()); onComplete(); } @Override public void onComplete() { - Log.e(TAG + "getAllApp", "onComplete: "); + Log.e("getAllApp", "onComplete: "); mView.getAllAppFinish(); } }); @@ -454,7 +174,7 @@ public class MainPresenter implements MainContact.Presenter { public void getAppInside() { NetInterfaceManager.getInstance() .getAppInsideControl() - .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY)) + .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) .subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { @@ -495,16 +215,16 @@ public class MainPresenter implements MainContact.Presenter { public void getForceInstall() { NetInterfaceManager.getInstance() .getForceInstallControl() - .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY)) + .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) .subscribe(new Observer>>() { @Override public void onSubscribe(Disposable d) { - Log.e(TAG + "getForceInstall", "onSubscribe: "); + Log.e("getForceInstall", "onSubscribe: "); } @Override public void onNext(BaseResponse> listBaseResponse) { - Log.e(TAG + "getForceInstall", "onNext: " + listBaseResponse); + Log.e("getForceInstall", "onNext: " + listBaseResponse); int code = listBaseResponse.code; if (code == 200) { List appInfos = listBaseResponse.data; @@ -513,19 +233,19 @@ public class MainPresenter implements MainContact.Presenter { } } else { boolean qch_force_app = JGYUtils.putString(mContext.getContentResolver(), "qch_force_app", "invalid"); - Log.e(TAG + TAG, "qch_force_app: invalid: " + qch_force_app); + Log.e("getForceInstall", "qch_force_app: invalid: " + qch_force_app); } } @Override public void onError(Throwable e) { - Log.e(TAG + "getForceInstall", "onError: "); + Log.e("getForceInstall", "onError: "); onComplete(); } @Override public void onComplete() { - Log.e(TAG + "getForceInstall", "onComplete: "); + Log.e("getForceInstall", "onComplete: "); mView.setForceInstall(); } }); @@ -535,16 +255,16 @@ public class MainPresenter implements MainContact.Presenter { public void getSystemSettings() { NetInterfaceManager.getInstance() .getsettingControl() - .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY)) + .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) .subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { - Log.e(TAG + "getSystemSettings", "onSubscribe: "); + Log.e("getSystemSettings", "onSubscribe: "); } @Override public void onNext(BaseResponse systemSettingsBaseResponse) { - Log.e(TAG + "getSystemSettings", "onNext: "); + Log.e("getSystemSettings", "onNext: "); SPUtils.put(mContext, "is_first_connection", 0); int code = systemSettingsBaseResponse.code; if (code == 200) { @@ -561,13 +281,13 @@ public class MainPresenter implements MainContact.Presenter { if ((int) SPUtils.get(mContext, "is_first_connection", 1) == 1) { ControlManager.getInstance().setDisableSetting(); } - Log.e(TAG + "getSystemSettings", "onError: " + e.getMessage()); + Log.e("getSystemSettings", "onError: " + e.getMessage()); onComplete(); } @Override public void onComplete() { - Log.e(TAG + "getSystemSettings", "onComplete: "); + Log.e("getSystemSettings", "onComplete: "); mView.setSystemSettings(); } }); @@ -576,16 +296,16 @@ public class MainPresenter implements MainContact.Presenter { @Override public void getBrowserLabel() { NetInterfaceManager.getInstance().getLabelControl() - .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY)) + .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) .subscribe(new Observer>() { @Override public void onSubscribe(Disposable d) { - Log.e(TAG + "getBrowserLabel", "onSubscribe: "); + Log.e("getBrowserLabel", "onSubscribe: "); } @Override public void onNext(BaseResponse