android 获取当前运行的APP及Activity
aosp/frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java 在此方法位置可以打印出当前系统显示的是哪一APP,运行在最前面,callingPid及为当前的APP的进程ID号,
public void adjustWindowParamsLw(WindowState win, WindowManager.LayoutParams attrs, int callingPid, int callingUid)
{
}
获取当前APP包名及Activity类名
private void getTopAppNameAndTopActivityName() {
android.app.ActivityManager am = (android.app.ActivityManager)
mContext.getSystemService(android.content.Context.ACTIVITY_SERVICE);
java.util.List<android.app.ActivityManager.RunningTaskInfo> runningTasks = am.getRunningTasks(1);
if (runningTasks != null && !runningTasks.isEmpty()) {
android.app.ActivityManager.RunningTaskInfo taskInfo = runningTasks.get(0);
String toApppkg = taskInfo.topActivity.getPackageName());
String toActivity = taskInfo.topActivity.getClassName());
}
}
taskInfo.baseActivity.getPackageName(); 获取应用包名,与taskInfo.topActivity.getPackageName()一样的返回值,
taskInfo.baseActivity.getClassName(); 此处返回当前运行应用的AndroidManifest.xml声明为action android:name="android.intent.action.MAIN"的activity类,它是固定不变的,//获取当前界面activity类名
private String getTopActivityClassName() {
String topActivityClass = null;
ActivityManager activityManager = (ActivityManager) (mContext
.getSystemService(Context.ACTIVITY_SERVICE));
try {
List<ActivityManager.RunningTaskInfo> runningTaskInfos = activityManager.getRunningTasks(1);
if (runningTaskInfos != null && runningTaskInfos.size() > 0) {
ComponentName f = runningTaskInfos.get(0).topActivity;
topActivityClass = f.getClassName();
}
} catch (Exception e) {
}
return topActivityClass;
}//判断应用是否为系统应用
public static boolean isSystemApp(Context context, String packageName) {
boolean result = false;
if (packageName != null) {
PackageManager pm = context.getPackageManager();
if (packageName != null) {
try {
ApplicationInfo appInfo = pm.getApplicationInfo(packageName, 0);
if (appInfo != null) {
if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) > 0) {
result = true;
}
}
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG_LOG, TAG + " Error getting application info:", e);
}
}
}
return result;
}//通过包名获取UID 与 进程名和包名
PackageInfo info = mContext.getPackageManager().getPackageInfo(pkg, 0);
//android.util.Log.i("xxx", " info.applicationInfo.processName = " + info.applicationInfo.processName);
//android.util.Log.i("xxx", " info.applicationInfo.uid = " + info.applicationInfo.uid);
//通过UID获取包名
try {
PackageManager pm = mContext.getPackageManager();
ApplicationInfo ai = pm.getApplicationInfo(pkg, PackageManager.GET_ACTIVITIES);
String[] pkgNames = mContext.getPackageManager().getPackagesForUid(ai.uid);
if (pkgNames != null) {
for (int j = 0; j < pkgNames.length; j++) {
//android.util.Log.i("xxxx","pkgname = "+ pkgNames[j]);
}
}
} catch (Exception e) {
e.printStackTrace();
}版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。








评论