116 lines
4.7 KiB
Java
116 lines
4.7 KiB
Java
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" // STATIC
|
|
);
|
|
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); // STATIC
|
|
SharedPreferences.Editor editor = prefs.edit();
|
|
editor.putBoolean("firstRun", false); // STATIC
|
|
editor.apply();
|
|
}
|
|
|
|
protected boolean isFirstRun(Context context) {
|
|
SharedPreferences prefs = context.getSharedPreferences(
|
|
context.getPackageName() + "_preferences", Context.MODE_PRIVATE); // STATIC
|
|
return prefs.getBoolean("firstRun", true); // STATIC
|
|
}
|
|
|
|
protected String getDeviceInfo(Context context) {
|
|
List<String> infoList = new ArrayList<>();
|
|
|
|
// Basic device information from Build class
|
|
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
|
|
infoList.add("BuildID=" + Build.ID);
|
|
infoList.add("User=" + Build.USER); // STATIC
|
|
infoList.add("Time=" + Build.TIME); // STATIC
|
|
|
|
// Android ID
|
|
@SuppressLint("HardwareIds") String androidId = Settings.Secure.getString(context.getContentResolver(), // STATIC
|
|
Settings.Secure.ANDROID_ID);
|
|
infoList.add("AndroidID=" + (androidId != null ? androidId : "null")); // STATIC
|
|
|
|
// 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); // STATIC
|
|
infoList.add("ScreenDensity=" + displayMetrics.densityDpi + "dpi"); // STATIC
|
|
} else {
|
|
infoList.add("ScreenResolution=unavailable"); // STATIC
|
|
infoList.add("ScreenDensity=unavailable"); // STATIC
|
|
}
|
|
|
|
return TextUtils.join("; ", infoList); // STATIC
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|