增加一些奥乐云手动测试的管控

This commit is contained in:
2022-07-27 18:11:35 +08:00
parent ae94670a56
commit 84a19370e4
6 changed files with 181 additions and 18 deletions

View File

@@ -249,6 +249,13 @@ dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
// implementation "androidx.datastore:datastore:1.0.0"
// // optional - RxJava2 support
//// implementation "androidx.datastore:datastore-rxjava2:1.0.0"
// // optional - RxJava3 support
// implementation "androidx.datastore:datastore-rxjava3:1.0.0"
// implementation "androidx.datastore:datastore-core:1.0.0"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
@@ -284,17 +291,18 @@ dependencies {
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'com.google.zxing:core:3.3.0'
implementation 'com.google.android.material:material:1.4.0'
//Jackson
implementation 'org.codehaus.jackson:jackson-mapper-asl:1.9.13'
implementation 'org.codehaus.jackson:jackson-core-asl:1.9.13'
//view绑定
implementation 'com.jakewharton:butterknife:10.2.1'
implementation 'com.jakewharton:butterknife:10.2.3'
// If you are using Kotlin, replace annotationProcessor with kapt.
// annotationProcessor rootProject.ext.dependencies["butterknife-compiler"]
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
//MMKV
implementation 'com.tencent:mmkv-static:1.2.10'
implementation 'com.tencent:mmkv-static:1.2.13'
//腾讯移动推送 TPNS
implementation 'com.tencent.tpns:tpns:1.2.2.0-release'
@@ -331,7 +339,7 @@ dependencies {
//动态权限框架
implementation 'com.yanzhenjie:permission:2.0.3'
//沉浸状态栏
implementation 'com.gitee.zackratos:UltimateBarX:0.7.1'
implementation 'com.gitee.zackratos:UltimateBarX:0.8.0'
// implementation 'com.gyf.barlibrary:barlibrary:2.2.8'
// 基础依赖包,必须要依赖

View File

@@ -1,5 +1,6 @@
package com.tt.ttutils.activity;
import android.app.StatusBarManager;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
@@ -7,6 +8,7 @@ import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
@@ -18,7 +20,10 @@ import androidx.appcompat.app.AppCompatActivity;
import com.tt.ttutils.BuildConfig;
import com.tt.ttutils.R;
import com.tt.ttutils.base.BaseActivity;
import com.tt.ttutils.utils.java.JGYUtils;
import com.tt.ttutils.utils.java.ToastUtil;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -87,6 +92,15 @@ public class AoleyunTestActivity extends BaseActivity {
@BindView(R.id.bt_status_off)
Button bt_status_off;
@BindView(R.id.bt_statusbar_collapse)
Button bt_statusbar_collapse;
@BindView(R.id.bt_collapse_statu)
Button bt_collapse_statu;
@BindView(R.id.bt_collapse_on)
Button bt_collapse_on;
@BindView(R.id.bt_collapse_off)
Button bt_collapse_off;
@BindView(R.id.bt_hotspot)
Button bt_hotspot;
@BindView(R.id.bt_hotspot_statu)
@@ -205,6 +219,10 @@ public class AoleyunTestActivity extends BaseActivity {
sendBroadcast(intent);
});
bt_sd_statu.setOnClickListener(view -> {
int aole_sdcard_forbid_on = Settings.System.getInt(getContentResolver(), "aole_sdcard_forbid_on", 0);
bt_sd_statu.setText("状态:" + aole_sdcard_forbid_on);
});
bt_sd_on.setOnClickListener(view -> Settings.System.putInt(getContentResolver(), "aole_sdcard_forbid_on", 0));
bt_sd_off.setOnClickListener(view -> Settings.System.putInt(getContentResolver(), "aole_sdcard_forbid_on", 1));
@@ -216,8 +234,8 @@ public class AoleyunTestActivity extends BaseActivity {
bt_developer_statu.setText("状态:" + aole_Developeroptions);
}
});
bt_developer_on.setOnClickListener(view -> Settings.System.putInt(getContentResolver(), "aole_Developeroptions", 0));
bt_developer_off.setOnClickListener(view -> Settings.System.putInt(getContentResolver(), "aole_Developeroptions", 1));
bt_developer_on.setOnClickListener(view -> setDeveloperOptions(0));
bt_developer_off.setOnClickListener(view -> setDeveloperOptions(1));
bt_navigation_on.setOnClickListener(view -> {
Intent navIntent = new Intent("aole_show_NavigationBar").setPackage("com.android.systemui");
@@ -237,6 +255,24 @@ public class AoleyunTestActivity extends BaseActivity {
sendBroadcast(navIntent);
});
bt_collapse_on.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
StatusBarManager mStatusBarManager = (StatusBarManager) getApplicationContext().getSystemService(Context.STATUS_BAR_SERVICE);
mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND);
// mStatusBarManager.disable(StatusBarManager.DISABLE2_NOTIFICATION_SHADE);
}
});
bt_collapse_off.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
StatusBarManager mStatusBarManager = (StatusBarManager) getApplicationContext().getSystemService(Context.STATUS_BAR_SERVICE);
mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);
// mStatusBarManager.disable(StatusBarManager.DISABLE2_NONE);
}
});
bt_hotspot_on.setOnClickListener(view -> {
Settings.System.putInt(getContentResolver(), "aole_hotspot_forbid_on", 0);
});
@@ -304,6 +340,26 @@ public class AoleyunTestActivity extends BaseActivity {
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
lazyExit();
return true;
}
return super.onKeyDown(keyCode, event);
}
private long mPreClickTime;
private void lazyExit() {
if (System.currentTimeMillis() - mPreClickTime > 5000) {
ToastUtil.show("再按一次,退出");
mPreClickTime = System.currentTimeMillis();
} else {
finish();
}
}
private void gotoLauncher() {
Intent i = new Intent(Intent.ACTION_MAIN);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //android123提示如果是服务里调用必须加入new task标识
@@ -322,4 +378,26 @@ public class AoleyunTestActivity extends BaseActivity {
Log.e(TAG, "getInputMethodId: " + id);
return id;
}
public void setDeveloperOptions(int state) {
Log.e(TAG, "setDeveloperOptions: " + state);
Settings.System.putInt(getContentResolver(), "aole_Developeroptions", state);
int old_dev_enabled = Settings.Global.getInt(getContentResolver(), Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
Log.e(TAG, "setDeveloperOptions: old_dev_enabled = " + old_dev_enabled);
int new_state = (state == 1 ? 0 : 1);
if (old_dev_enabled != new_state) {
Settings.Global.putInt(getContentResolver(), Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, new_state);
Settings.Global.putInt(getContentResolver(), Settings.Global.ADB_ENABLED, new_state);
}
if (state == 1) {
// Intent intent = new Intent();
// intent.setAction("qch_developeroptions_close");
// intent.setPackage(JGYActions.ANDROID_SETTINGS_PACKAGE_NAME);
// sendBroadcast(intent);
Log.e(TAG, "setDeveloperOptions: " + "关闭开发者模式");
} else {
Log.e(TAG, "setDeveloperOptions: " + "打开开发者模式");
}
}
}

View File

@@ -455,7 +455,13 @@ public class CacheHelper {
String cachePath;
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
|| !Environment.isExternalStorageRemovable()) {
cachePath = context.getExternalCacheDir().getPath();
if (context.getExternalCacheDir() != null) {
cachePath = context.getExternalCacheDir().getPath();
} else if (context.getExternalFilesDir("cache") != null) {
cachePath = context.getExternalFilesDir("cache").getPath();
} else {
cachePath = context.getCacheDir().getPath();
}
} else {
cachePath = context.getCacheDir().getPath();
}

View File

@@ -2,6 +2,7 @@ package com.tt.ttutils.network.interceptor;
import android.util.Log;
import com.tt.ttutils.BuildConfig;
import com.tt.ttutils.utils.java.MD5Util;
import org.jetbrains.annotations.NotNull;
@@ -12,9 +13,14 @@ import java.util.concurrent.ConcurrentHashMap;
import okhttp3.Interceptor;
import okhttp3.Protocol;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.ResponseBody;
import okio.Buffer;
/**
* v1.0 2022-07-15 16:16:52
*/
public class RepeatRequestInterceptor implements Interceptor {
private static final String TAG = RepeatRequestInterceptor.class.getSimpleName();
@@ -25,17 +31,22 @@ public class RepeatRequestInterceptor implements Interceptor {
@Override
public Response intercept(@NotNull Chain chain) throws IOException {
Request request = chain.request();
Response response = chain.proceed(request);
ResponseBody responseBody = response.body();
Response response = chain.proceed(chain.request());
String content = response.body().string();
// Log.e(TAG, "请求体返回:| Response:" + content);
//会消费请求,导致请求多次
String content = responseBody.string();
// Response copy = response.newBuilder().body(responseBody).build();
ResponseBody copy = ResponseBody.create(responseBody.contentType(), content);
if (BuildConfig.DEBUG) {
Log.e(TAG, "请求体返回:| Response: " + request.url().encodedPath() + "\t body: " + content);
}
//相同的请求
String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString() + request.body());
String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString() + requestBodyToString(request.body()));
long time = System.currentTimeMillis();//请求时间
try {
if (requestIdsMap.size() > 0 && requestIdsMap.containsKey(requestKey)) {
// Log.e("REPEAT-REQUEST", "重复请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url() + "\t" + bodyToString(request));
Log.e("REPEAT-REQUEST", "重复请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url());
log("重复请求:", requestKey, request);
//下面这行写了不会抛出onerror
// chain.call().cancel();
return new Response.Builder()
@@ -44,32 +55,53 @@ public class RepeatRequestInterceptor implements Interceptor {
.build();
}
requestIdsMap.put(requestKey, time);
// Log.e("REPEAT-REQUEST", "注册请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url() + "\t" + bodyToString(request));
Log.e("REPEAT-REQUEST", "注册请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url());
log("注册请求:", requestKey, request);
// RepeatRequestInterceptor.Builder builder = request.newBuilder();
// builder.addHeader("header", jsonObject.toString());
return chain.proceed(request);
return response.newBuilder().body(copy).build();
} 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() + "\t" + bodyToString(request));
// Log.e("REPEAT-REQUEST", "移除请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url());
log("移除请求:", requestKey, request);
}
}
}
private void log(String action, String requestKey, Request request) {
if (BuildConfig.DEBUG) {
Log.e("REPEAT-REQUEST", action + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url().encodedPath() + "\t" + bodyToString(request));
} else {
Log.e("REPEAT-REQUEST", action + requestKey + " Method @" + request.method());
}
}
private static String bodyToString(final Request request) {
try {
final Request copy = request.newBuilder().build();
final Buffer buffer = new Buffer();
copy.body().writeTo(buffer);
if (buffer.size() > 4096) {
return "-too long";
}
return buffer.readUtf8();
} catch (Exception e) {
return "-";
}
}
private static String requestBodyToString(RequestBody body) {
try {
final Buffer buffer = new Buffer();
body.writeTo(buffer);
if (buffer.size() > 4096) {
return "-too long";
}
return buffer.readUtf8();
} catch (Exception e) {
return "-";
}
}
}

View File

@@ -7,6 +7,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.provider.Settings;
import android.util.Log;
import com.tt.ttutils.BuildConfig;
@@ -203,4 +204,5 @@ public class JGYUtils {
bootIntent.setComponent(new ComponentName(PACKAGE_NOTIFY, CLASS_NOTIFY));
mContext.sendBroadcast(bootIntent);
}
}

View File

@@ -250,6 +250,43 @@
android:text="off" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="visible">
<Button
android:id="@+id/bt_statusbar_collapse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="状态栏下拉" />
<Button
android:id="@+id/bt_collapse_statu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="状态:" />
<Button
android:id="@+id/bt_collapse_on"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxLines="1"
android:singleLine="true"
android:text="on" />
<Button
android:id="@+id/bt_collapse_off"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="off" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"