2012-05-30 28 views

Trả lời

44

Lớp PackageManager cung cấp phương thức getInstallerPackageName sẽ cho bạn biết tên gói của bất kỳ thứ gì đã cài đặt gói bạn chỉ định. Ứng dụng được tải bên sẽ không chứa giá trị.

EDIT: Lưu ý @mttmllns 'answer below liên quan đến cửa hàng ứng dụng Amazon.

+4

Nó hoạt động rất tốt. – ttom

+0

@AbhishekB bạn đang sử dụng phiên bản Android nào? Bạn đang ở trong một trình mô phỏng? – MattC

+3

@AbhishekB Tôi không biết cách nào để tìm ra nguyên nhân của các ứng dụng được tải phụ. Tôi không chắc chắn làm thế nào mà thậm chí sẽ được theo dõi kể từ khi về mặt kỹ thuật nó chỉ là một tập tin APK được nạp vào thiết bị một nơi nào đó và sau đó có lẽ được cài đặt thông qua PackageManager. – MattC

22

Và FYI apparently phiên bản mới nhất của cửa hàng Amazon cuối cùng cũng đặt PackageManager.getInstallerPackageName() thành "com.amazon.venezia" cũng tương phản với số "com.android.vending" của Google Play.

+0

Không thể thực hiện tham chiếu tĩnh đến phương thức không tĩnh getInstallerPackageName (String) từ kiểu PackageManager –

+0

Mỗi appstore có marketapp riêng trên Playstore để lần lượt cài đặt các gói (gói) của chúng. Người quản lý gói getInstaller ...() trả về tên gói của marketapp đã cài đặt một gói ứng dụng cụ thể. Ví dụ. com.amazon.venezia là tên gói của marketapp amazon. Khá thông minh, bởi vì sau đó PlayStore có thể kiểm soát các ứng dụng thị trường nào được tin cậy. Điều này được thiết kế để cuối cùng ngăn chặn tất cả các sideloads không đáng tin cậy. Nhận thấy rằng sự hấp thu của các phiên bản hệ điều hành Android mới đang giảm đáng kể. KitKat có thể trở thành tiêu chuẩn defacto. –

15

tôi sử dụng mã này để kiểm tra, nếu một xây dựng đã được tải về từ một cửa hàng hoặc tải hai chiều:

public static boolean isStoreVersion(Context context) { 
    boolean result = false; 

    try { 
     String installer = context.getPackageManager() 
            .getInstallerPackageName(context.getPackageName()); 
     result = !TextUtils.isEmpty(installer); 
    } catch (Throwable e) {   
    } 

    return result; 
} 
Các vấn đề liên quan