2011-07-26 47 views
11

Thông thường có một trình khởi chạy trên thiết bị Android. Nhưng đôi khi người dùng cài đặt một vài trong khi chỉ một trong số họ hoạt động.Trình khởi chạy nào đang chạy?

Làm cách nào để kiểm tra trình khởi chạy nào hiện đang hoạt động trên thiết bị Android của tôi?

Cảm ơn.

Trả lời

22

Các màn hình chủ được bắt đầu với IntentACTION_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 
+2

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'. –

3
private String findLauncherPackageName(){  
    final Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    final ResolveInfo res = getPackageManager().resolveActivity(intent, 0); 
    Log.e("ANDRO_ASYNC", String.format("findLauncherPackageName()%s",res.activityInfo.packageName)); 
    return res.activityInfo.packageName; 
} 
+1

Mã này không phải lúc nào cũng trả lại trình khởi chạy hiện hoạt, nó sẽ trả về trình khởi chạy mặc định, nếu có. – THelper

0

bạn chỉ có thể kiểm tra tiêu đề của trình khởi chạy hiện hoạt nếu nó được đánh dấu mặc định. otherwwise bạn sẽ nhận được kết quả như

com.android.internal.app.ResolverActivity 
Các vấn đề liên quan