我正在尝试制作一个程序,可以显示所有活动应用程序。
我已经搜索了很多地方,但只找到了显示包名的代码。
如果您们大神能告诉我如何显示所有活动的应用程序名称,那将非常有帮助。
我正在尝试制作一个程序,可以显示所有活动应用程序。
我已经搜索了很多地方,但只找到了显示包名的代码。
如果您们大神能告诉我如何显示所有活动的应用程序名称,那将非常有帮助。
你尝试使用 ActivityManager.getRunningAppProcesses()
了吗?
下面是检索名称的示例代码:
ActivityManager am = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
List l = am.getRunningAppProcesses();
Iterator i = l.iterator();
PackageManager pm = this.getPackageManager();
while(i.hasNext()) {
ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo)(i.next());
try {
CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(info.processName, PackageManager.GET_META_DATA));
Log.w("LABEL", c.toString());
}catch(Exception e) {
//Name Not FOund Exception
}
}
http://developer.android.com/reference/android/content/pm/PackageManager.html
有直接的方法可以获取应用程序图标,ApplicationInfo和ActivityInfo对象。我不确定哪个方法会直接指向可读名称,但如果这些方法中没有一个可以直接访问它,那么它应该可以从应用程序资源中访问(也可以从此类中访问)。
public class MyService extends Service implements {
ActivityManager mActivityManager;
@Override public void onCreate() {
mActivityManager = (ActivityManager)getSystemService(ACTIVITY_SERVICE ); }
String getForegroundAppName() {
String appname;
List <RunningAppProcessInfo> l;
l = mActivityManager.getRunningAppProcesses();
while( i.hasNext() ) {
if ( info.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND && !isRunningService(info.processName) {
currentApp = info;
break;
}
}
if ( currentApp != null ) {
try {
CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(currentApp.processName, PackageManager.GET_META_DATA ));
appname = c.toString();
}
return appname;
}
}
public class MyService extends Service implements {
@Override public void onCreate() {... }
String getForegroundAppName() {
ActivityManager mActivityManager;
String appname;
mActivityManager = (ActivityManager)getSystemService(ACTIVITY_SERVICE );
List <RunningAppProcessInfo> l;
l = mActivityManager.getRunningAppProcesses();
while( i.hasNext() ) {
if ( info.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND && !isRunningService(info.processName) {
currentApp = info;
break;
}
}
if ( currentApp != null ) {
try {
CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(currentApp.processName, PackageManager.GET_META_DATA ));
appname = c.toString();
}
return appname;
}
}