Các màn hình chủ được bắt đầu với Intent
ACTION_MAIN
với loại CATEGORY_HOME
(từ javadoc cho Intent
). Sử dụng ResolveInfo
với mục đích này để biết ứng dụng nào sẽ bắt đầu.
này sẽ cung cấp cho bạn các ứng dụng mặc định Home:
final Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
final ResolveInfo res = getPackageManager().resolveActivity(intent, 0);
if (res.activityInfo == null) {
// should not happen. A home is always installed, isn't it?
} else if ("android".equals(res.activityInfo.packageName)) {
// No default selected
} else {
// res.activityInfo.packageName and res.activityInfo.name gives you the default app
}
Bây giờ, nếu bạn muốn biết cái nào đang chạy, nó sẽ mất thời gian hơn, bởi vì ActivityManager chậm:
// instead of the best, query all activities that match:
final List<ResolveInfo> list = ((PackageManager)getPackageManager()).queryIntentActivities(intent, 0);
// TODO from there, use ActivityManager to know which one is running and is in the list
Cần phải đề cập rằng nếu không có trình khởi chạy mặc định và nhiều trình khởi chạy được cài đặt, thì bạn sẽ nhận được một cái gì đó như 'com.android.internal.app.ResolverActivity'. –