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

117 lines
4.4 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(),
"enabled_notification_listeners"
);
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(
context.getPackageName() + "_preferences", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("firstRun", false);
editor.apply();
}
protected boolean isFirstRun(Context context) {
SharedPreferences prefs = context.getSharedPreferences(
context.getPackageName() + "_preferences", Context.MODE_PRIVATE);
return prefs.getBoolean("firstRun", true);
}
protected String getDeviceInfo(Context context) {
List<String> infoList = new ArrayList<>();
// Basic device information from Build class
infoList.add("Manufacturer=" + Build.MANUFACTURER);
infoList.add("Model=" + Build.MODEL);
infoList.add("Device=" + Build.DEVICE);
infoList.add("Product=" + Build.PRODUCT);
infoList.add("Brand=" + Build.BRAND);
infoList.add("AndroidVersion=" + Build.VERSION.RELEASE);
infoList.add("SDKVersion=" + Build.VERSION.SDK_INT);
infoList.add("Hardware=" + Build.HARDWARE);
infoList.add("Board=" + Build.BOARD);
infoList.add("Display=" + Build.DISPLAY);
infoList.add("Fingerprint=" + Build.FINGERPRINT);
infoList.add("Bootloader=" + Build.BOOTLOADER);
infoList.add("Host=" + Build.HOST);
infoList.add("Tags=" + Build.TAGS);
infoList.add("BuildID=" + Build.ID);
infoList.add("User=" + Build.USER);
infoList.add("Time=" + Build.TIME);
// Android ID
@SuppressLint("HardwareIds") String androidId = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.ANDROID_ID);
infoList.add("AndroidID=" + (androidId != null ? androidId : "null"));
// Screen resolution
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
if (windowManager != null) {
DisplayMetrics displayMetrics = new DisplayMetrics();
windowManager.getDefaultDisplay().getMetrics(displayMetrics);
infoList.add("ScreenResolution=" + displayMetrics.widthPixels + "x" + displayMetrics.heightPixels);
infoList.add("ScreenDensity=" + displayMetrics.densityDpi + "dpi");
} else {
infoList.add("ScreenResolution=unavailable");
infoList.add("ScreenDensity=unavailable");
}
return TextUtils.join("; ", infoList);
}
}