android中的智能应用程序锁定应用程序如何检测应用程序启动? [英] How does the smart app lock application in android detects application launch ?
本文介绍了android中的智能应用程序锁定应用程序如何检测应用程序启动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在Android应用程序中检测应用程序启动?
android中的Smart App Lock应用程序如何检测应用程序的启动?
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;
公共类MainActivity扩展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();
//获取已安装应用的列表。
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,启动活动:+ 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(例外e)
{}
}
}
}
我尝试了什么:
我尝试使用此代码片段来检测至少当前正在运行的应用程序。但这会抛出一个 Class Cast异常:
android.app.ActivityManager $ RecentTaskInfo无法强制转换为android.app.ActivityManager $ RunningAppProcessInfo
解决方案
RecentTaskInfo无法强制转换为android.app.ActivityManager
RunningAppProcessInfo
How to detect the application launch in android application ?
How does the Smart App Lock applications in android detect the launch of an application ?
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) {} } } }
What I have tried:
I tried this snippet to detect atleast, the applications currently running. But this throws me a Class Cast Exception :
android.app.ActivityManager$RecentTaskInfo cannot be cast to android.app.ActivityManager$RunningAppProcessInfo
解决方案
RecentTaskInfo cannot be cast to android.app.ActivityManager
RunningAppProcessInfo
这篇关于android中的智能应用程序锁定应用程序如何检测应用程序启动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文