studio para mejores las instalar gratis descargar como apps aplicaciones android password-protection

para - Bloqueando las aplicaciones de Android programáticamente



las mejores aplicaciones para android 2018 gratis (2)

Parece que esto sigue siendo un misterio como lo sugieren los comentarios mencionados anteriormente. Por lo tanto, estoy poniendo el código que me ayudó a resolver este problema.

getForegroundApp

public String getForegroundApp() { String currentApp = "NULL"; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { UsageStatsManager usm = (UsageStatsManager) this.mContext.getSystemService(Context.USAGE_STATS_SERVICE); long time = System.currentTimeMillis(); List<UsageStats> appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 1000, time); if (appList != null && appList.size() > 0) { SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>(); for (UsageStats usageStats : appList) { mySortedMap.put(usageStats.getLastTimeUsed(), usageStats); } if (mySortedMap != null && !mySortedMap.isEmpty()) { currentApp = mySortedMap.get(mySortedMap.lastKey()).getPackageName(); } } } else { ActivityManager am = (ActivityManager) this.mContext.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> tasks = am.getRunningAppProcesses(); currentApp = tasks.get(0).processName; } return currentApp; }

Llame a getForegroundApp() y devolverá una cadena que contiene el nombre de la currentForegroundApp que incluye el nombre del paquete, por ejemplo, com.example.app

Ahora, para usar este código, necesitamos esta línea de código en el archivo Manifest

<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />

y llevar al usuario a la Usage Data access Settings :

useAccessSettingsPage

public void usageAccessSettingsPage(){ Intent intent = new Intent(); intent.setAction(Settings.ACTION_USAGE_ACCESS_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromParts("package", mContext.getPackageName(), null); intent.setData(uri); startActivity(intent); }

o manualmente encontrando en LockScreen and Security > Other security settings > Usage access data .

Ahora viene la parte para bloquear la aplicación, esta parte está muy bien cubierta en la respuesta de Amit. Sin embargo, si alguien está buscando una manera de restringir al usuario para que no use una aplicación, entonces un truco es abrir la pantalla de inicio cuando se inicia una aplicación en particular.

Esto se puede hacer llamando al siguiente método cuando currentApp es igual a una aplicación bloqueada

if(<NameOfBlockedApp>.equals currentApp){ showHomeScreen(); }

ShowHomeScreen

public boolean showHomeScreen(){ Intent startMain = new Intent(Intent.ACTION_MAIN); startMain.addCategory(Intent.CATEGORY_HOME); startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(startMain); return true; }

Intenté desarrollar una aplicación de este tipo, en el sentido en que quiero bloquear todas las aplicaciones de mi dispositivo con una contraseña, lo que yo quiera. Pero no encontré ningún pedazo de código para la solución. Así que desarrollé uno solo y desafortunadamente no tuvo éxito. Encontré muchas soluciones para bloquear dispositivos Android, pero no encontré una para bloquear una aplicación. Estaré contento si sugieres una solución.


Utilicé un servicio en segundo plano para comprobar qué aplicación está en primer plano (lo que significa que el usuario está utilizando esa aplicación). Luego verifico si necesito bloquear la aplicación o no.

Para encontrar la lista de todas las aplicaciones instaladas (excluidas las aplicaciones del sistema):

PackageManager packageManager = getPackageManager(); Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); List<ResolveInfo> appList = packageManager.queryIntentActivities(mainIntent, 0); Collections.sort(appList, new ResolveInfo.DisplayNameComparator(packageManager)); List<PackageInfo> packs = packageManager.getInstalledPackages(0); for (int i = 0; i < packs.size(); i++) { PackageInfo p = packs.get(i); ApplicationInfo a = p.applicationInfo; // skip system apps if they shall not be included if ((a.flags & ApplicationInfo.FLAG_SYSTEM) == 1) { continue; } appList.add(p.packageName); }

Para encontrar la aplicación actual en primer plano:

ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningTaskInfo> RunningTask = mActivityManager.getRunningTasks(1); ActivityManager.RunningTaskInfo ar = RunningTask.get(0); activityOnTop=ar.topActivity.getClassName();

Aquí el nombre de la clase proporciona el nombre del paquete de la aplicación. Le sugiero que utilice el nombre del paquete para identificar cualquier aplicación, por lo que sabemos que el nombre del paquete siempre es único.

Ahora, la funcionalidad para bloquear la aplicación:

Para encontrar qué aplicación se está ejecutando en primer plano y queremos bloquearla, solo tenemos que iniciar otra actividad que tenga un Texto de edición para la contraseña y el botón Aceptar y Cancelar.

Intent lockIntent = new Intent(mContext, LockScreen.class); lockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(lockIntent);

Al hacer clic en Aceptar, si la contraseña es correcta, simplemente finalice la actividad LockScreen. Si la contraseña es incorrecta, simplemente use el código a continuación, que cierra la aplicación y muestra la pantalla de inicio del dispositivo:

Intent startHomescreen = new Intent(Intent.ACTION_MAIN); startHomescreen.addCategory(Intent.CATEGORY_HOME); startHomescreen.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(startHomescreen);

El mismo código también se usa en el botón de cancelar.