2011-11-15 24 views
9

Tôi đang cố gắng lấy danh sách người nhận xử lý android.intent.action.BOOT_COMPLETED cho các ứng dụng khác.Nhận bộ lọc ý định cho người nhận

tôi có thể chỉ nhận được các ứng dụng với điều đó hành động với điều này:

final PackageManager pm = getPackageManager(); 
final Intent intent = new Intent("android.intent.action.BOOT_COMPLETED"); 
final List<ResolveInfo> activities = pm.queryBroadcastReceivers(intent, 0); 
for (ResolveInfo ri : activities) { 
    Log.i(TAG, "app name: " + ri.loadLabel(pm)); 
} 

tôi có thể có được một danh sách các máy thu với mã này:

final List<PackageInfo> packs = pm.getInstalledPackages(PackageManager.GET_RECEIVERS); 
for (final PackageInfo p : packs) { 
    ActivityInfo[] receivers = p.receivers; 
    if (receivers != null) { 
     for (ActivityInfo ai : receivers) { 
      Log.i(TAG, "receiver: " + ai.name); 
     } 
    }     
} 

Sau khi tôi nhận được thu tôi không thể nói gì intent-filter/action là. Nếu một ứng dụng có hai máy thu, tôi cần biết thiết bị nào xử lý android.intent.action.BOOT_COMPLETED. Có cách nào tôi có thể nhận được thông tin này không?

+1

Ok, tôi nghĩ là đã hiểu. final PackageManager pm = getPackageManager(); mục đích Intent intent = new Intent ("android.intent.action.BOOT_COMPLETED"); Danh sách cuối cùng hoạt động = pm.queryBroadcastNhận (ý định, 0); cho (ResolveInfo ri: hoạt động) { Log.i (TAG, "tên ứng dụng:" + ri.loadLabel (pm)); // Những gì tôi cần: ActivityInfo ai = ri.activityInfo; nếu (ai! = Null) { Log.i (TAG, "người nhận:" + ai.name); } } đủ dễ dàng. –

+0

Xin chào Jared, bạn nên tự mình đăng câu trả lời cho câu hỏi này, sau đó bạn có thể làm cho mã được định dạng độc đáo. Đừng lo, bạn có thể chấp nhận câu trả lời cho câu hỏi của riêng bạn! –

+0

Cảm ơn Dan. Tôi đã đi để làm điều đó nhưng nó sẽ không cho tôi kể từ khi tôi là một thành viên mới và phải chờ đợi 8 giờ để trả lời câu hỏi của riêng tôi. Tôi sẽ khi 8 giờ lên :) –

Trả lời

16

Tôi đã định dạng lại cho mọi người. Sử dụng điều này và cảm ơn câu hỏi.

PackageManager packageManager = getPackageManager(); 
List<String> startupApps = new ArrayList<String>(); 
Intent intent = new Intent(Intent.ACTION_BOOT_COMPLETED); 
List<ResolveInfo> activities = packageManager.queryBroadcastReceivers(intent, 0); 
for (ResolveInfo resolveInfo : activities) { 
    ActivityInfo activityInfo = resolveInfo.activityInfo; 
    if (activityInfo != null) { 
     startupApps.add(activityInfo.name); 
    } 
} 
Các vấn đề liên quan