117 lines
4.4 KiB
Java
117 lines
4.4 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"
|
||
|
);
|
||
|
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);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
}
|