Tôi có một ứng dụng lưu nhật ký các ứng dụng được phát triển nội bộ được cài đặt trên thiết bị. Sau khi cài đặt một máy thu phát sóng cho Intent.PACKAGE_ADDED được gọi và ghi lại tên gói sử dụng đoạn mã sau:Cách tìm tên gói đã được gỡ cài đặt khi sử dụng Intent.ACTION_PACKAGE_REMOVED
public class NewInstallReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle b = intent.getExtras();
int uid = b.getInt(Intent.EXTRA_UID);
String[] packages = context.getPackageManager().getPackagesForUid(uid);
ApplicationService appService = new ApplicationService(context);
appService.ApplicationInstalled(packages);
}
}
Vấn đề tôi đang phải đối mặt là khi sử dụng một máy thu phát sóng cho Intent.PACKAGE_REMOVED, tất cả các tham chiếu đến các gói thông qua Id duy nhất (UID) trở lại với thông tin null (Như bạn mong đợi, đã được gỡ cài đặt). Tôi có một giải pháp tạm thời cho thời gian đó, nhưng nó không phải là rất thanh lịch, và cho phiên bản tiếp theo tôi muốn có mã sạch hơn. Một ví dụ về cách mã nên làm việc:
public class RemoveApplicationReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle b = intent.getExtras();
int uid = b.getInt(Intent.EXTRA_UID);
String[] packages = context.getPackageManager().getPackagesForUid(uid);
ApplicationService appService = new ApplicationService(context);
appService.ApplicationRemoved(packages);
}
}
Vì vậy, để tóm tắt, câu hỏi là:
thế nào, sau khi một chương trình đã được gỡ bỏ, tôi có thể tham khảo các tên gói trong một máy thu phát sóng cho Intent. PACKAGE_REMOVED.
Cảm ơn
Tôi cũng nhận được null từ getPackagesForUid (uid). Những gì tôi muốn là để có được danh sách của tất cả các gói cài đặt cho người dùng hiện tại. Có thể cung cấp một số đầu vào? – Pratik