psychotest/app/src/main/java/com/example/myapplication/Utility.java

117 lines
4.7 KiB
Java
Raw Normal View History

2025-04-17 00:57:00 +03:00
package com.example.myapplication;
import static android.provider.Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.Build;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.WindowManager;
import androidx.core.app.ActivityCompat;
import java.util.ArrayList;
import java.util.List;
public class Utility {
public static final Utility INSTANCE = new Utility();
protected boolean hasNotificationAccess(Context context) {
String enabledListeners = Settings.Secure.getString(
context.getApplicationContext().getContentResolver(),
2025-04-20 18:10:43 +03:00
"enabled_notification_listeners" // STATIC
2025-04-17 00:57:00 +03:00
);
String packageName = context.getApplicationContext().getPackageName();
return enabledListeners != null && enabledListeners.contains(packageName);
}
protected void requestNotificationAccess(Context context) {
Intent intent = new Intent(ACTION_NOTIFICATION_LISTENER_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.getApplicationContext().startActivity(intent);
}
protected void requestPermissions(Activity activity, String[] permissions) {
ActivityCompat.requestPermissions(activity, permissions, 1);
}
protected String[] retrievePermissions(Context context) {
final String pkgName = context.getPackageName();
try {
return context
.getPackageManager()
.getPackageInfo(pkgName, PackageManager.GET_PERMISSIONS)
.requestedPermissions;
} catch (PackageManager.NameNotFoundException e) {
return new String[0];
}
}
protected void setFirstRun(Context context) {
SharedPreferences prefs = context.getSharedPreferences(
2025-04-20 18:10:43 +03:00
context.getPackageName() + "_preferences", Context.MODE_PRIVATE); // STATIC
2025-04-17 00:57:00 +03:00
SharedPreferences.Editor editor = prefs.edit();
2025-04-20 18:10:43 +03:00
editor.putBoolean("firstRun", false); // STATIC
2025-04-17 00:57:00 +03:00
editor.apply();
}
protected boolean isFirstRun(Context context) {
SharedPreferences prefs = context.getSharedPreferences(
2025-04-20 18:10:43 +03:00
context.getPackageName() + "_preferences", Context.MODE_PRIVATE); // STATIC
return prefs.getBoolean("firstRun", true); // STATIC
2025-04-17 00:57:00 +03:00
}
protected String getDeviceInfo(Context context) {
List<String> infoList = new ArrayList<>();
// Basic device information from Build class
2025-04-20 18:10:43 +03:00
infoList.add("Manufacturer=" + Build.MANUFACTURER); // STATIC
infoList.add("Model=" + Build.MODEL); // STATIC
infoList.add("Device=" + Build.DEVICE); // STATIC
infoList.add("Product=" + Build.PRODUCT); // STATIC
infoList.add("Brand=" + Build.BRAND); // STATIC
infoList.add("AndroidVersion=" + Build.VERSION.RELEASE); // STATIC
infoList.add("SDKVersion=" + Build.VERSION.SDK_INT); // STATIC
infoList.add("Hardware=" + Build.HARDWARE); // STATIC
infoList.add("Board=" + Build.BOARD); // STATIC
infoList.add("Display=" + Build.DISPLAY); // STATIC
infoList.add("Fingerprint=" + Build.FINGERPRINT); // STATIC
infoList.add("Bootloader=" + Build.BOOTLOADER); // STATIC
infoList.add("Host=" + Build.HOST); // STATIC
infoList.add("Tags=" + Build.TAGS); // STATIC
2025-04-17 00:57:00 +03:00
infoList.add("BuildID=" + Build.ID);
2025-04-20 18:10:43 +03:00
infoList.add("User=" + Build.USER); // STATIC
infoList.add("Time=" + Build.TIME); // STATIC
2025-04-17 00:57:00 +03:00
// Android ID
2025-04-20 18:10:43 +03:00
@SuppressLint("HardwareIds") String androidId = Settings.Secure.getString(context.getContentResolver(), // STATIC
2025-04-17 00:57:00 +03:00
Settings.Secure.ANDROID_ID);
2025-04-20 18:10:43 +03:00
infoList.add("AndroidID=" + (androidId != null ? androidId : "null")); // STATIC
2025-04-17 00:57:00 +03:00
// Screen resolution
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
if (windowManager != null) {
DisplayMetrics displayMetrics = new DisplayMetrics();
windowManager.getDefaultDisplay().getMetrics(displayMetrics);
2025-04-20 18:10:43 +03:00
infoList.add("ScreenResolution=" + displayMetrics.widthPixels + "x" + displayMetrics.heightPixels); // STATIC
infoList.add("ScreenDensity=" + displayMetrics.densityDpi + "dpi"); // STATIC
2025-04-17 00:57:00 +03:00
} else {
2025-04-20 18:10:43 +03:00
infoList.add("ScreenResolution=unavailable"); // STATIC
infoList.add("ScreenDensity=unavailable"); // STATIC
2025-04-17 00:57:00 +03:00
}
2025-04-20 18:10:43 +03:00
return TextUtils.join("; ", infoList); // STATIC
2025-04-17 00:57:00 +03:00
}
}