Как приложение smart app lock В android обнаруживает запуск приложения ?
Как обнаружить запуск приложения в android-приложении ?
Каким образом приложения, удобное приложение для блокировки в Android обнаружить запуск приложения ?
import android.app.ActivityManager; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import java.util.Iterator; import java.util.List; public class MainActivity extends AppCompatActivity { public static final String TAG ="MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final PackageManager packageManager = getPackageManager(); //get a list of installed apps. List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA); for (ApplicationInfo packageInfo : packages) { Log.d(TAG, "Installed package :" + packageInfo.packageName); Log.d(TAG, "Source dir : " + packageInfo.sourceDir); Log.d(TAG, "Launch Activity :" + packageManager.getLaunchIntentForPackage(packageInfo.packageName)); } ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); List l = activityManager.getRecentTasks(1, ActivityManager.RECENT_WITH_EXCLUDED); Iterator i = l.iterator(); while (i.hasNext()) { ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) i.next(); try { CharSequence c = packageManager.getApplicationLabel(packageManager.getApplicationInfo( info.processName, PackageManager.GET_META_DATA)); Log.w("LABEL", c.toString()); } catch (Exception e) {} } } }
Что я уже пробовал:
Я попробовал этот фрагмент кода, чтобы обнаружить, по крайней мере, запущенные в данный момент приложения. Но это бросает меня в тупик. Класс Исключению Броска :
android.app.ActivityManager$RecentTaskInfo cannot be cast to android.app.ActivityManager$RunningAppProcessInfo
Richard MacCutchan
Потому что эти два класса разные.
David Crow
Исключение состоит в том, чтобы сказать вам, в чем именно заключается проблема: RecentTaskInfo
не может быть брошен в RunningAppProcessInfo
. Проверьте строку 74 из MainActivity.java
.
Если оставить этот вопрос в стороне, то почему вы пытаетесь использовать устаревший метод getRecentTasks()
- Видишь предупреждение здесь.
GaneshRfromSpace
Да, я очень недавно понял, что и getRunningTasks(int), и getRunningAppProcesses() устарели от Android 5+.
Я нашел эту библиотеку здесь.
Есть ли какой-нибудь другой способ узнать, какие все приложения в данный момент запущены ?