2010-03-25 27 views
6

Tôi muốn xuất bản đơn đăng ký của mình (ABC). Một tập tin audiobook của nó (chỉ là ví dụ.) Được bao bọc dưới dạng apk. Khi người dùng cài đặt ứng dụng này, nó cần kiểm tra xem ứng dụng khác (XYZ) đã được cài đặt hay chưa. Nếu không cho người dùng biết họ phải cài đặt ứng dụng XYZ trước khi cài đặt ABC.Android kiểm tra ứng dụng phụ thuộc trong khi cài đặt?

Cảm ơn trước

Rajesh

Trả lời

18

Nếu bạn biết tên gói ứng dụng mà bạn đang tìm kiếm bạn có thể sử dụng PackageManager để kiểm tra sự tồn tại của một ứng dụng.

try{ 
    ApplicationInfo info = getPackageManager() 
          .getApplicationInfo("com.myproject", 0); 
    //-- application exists 
    } catch(PackageManager.NameNotFoundException e){ 
    //-- application doesn't exist 
} 
+1

Tôi không nghĩ bạn có thể thực hiện điều này "khi cài đặt". Bạn sẽ cần phải làm điều đó trong lần đầu tiên bạn chạy ứng dụng nhiều khả năng nhất. –

+0

phải ... Tôi không nghĩ rằng có thể chạy mã này khi cài đặt. Điều đó nói rằng, bạn có thể thực hiện hành động nào trong quá trình cài đặt? Nó sẽ là tốt hơn để kiểm tra sự tồn tại của một ứng dụng khác lần đầu tiên một người nào đó thực sự chạy ứng dụng của bạn? – JeremyFromEarth

+6

"Điều đó nói rằng, bạn có thể thực hiện hành động gì trong quá trình cài đặt?" Không có gì - bạn không có quyền kiểm soát theo người dùng trước tiên sẽ khởi chạy ứng dụng của bạn. "Sẽ tốt hơn nếu kiểm tra sự tồn tại của một ứng dụng khác vào lần đầu tiên có ai đó thực sự chạy ứng dụng của bạn?" Không có lựa chọn - đó là lựa chọn thực sự duy nhất. Tôi đã lập luận về một hệ thống phụ thuộc cho các APK để đối phó với tình huống này, và phản ứng đã ... không được áp đảo. – CommonsWare

2

Trong trường hợp XYZ là một thư viện chia sẻ , bạn có thể thiết lập manifest android ứng dụng của bạn để ngăn chặn người dùng cài đặt ABC mà không XYZ. Vui lòng sử dụng các yếu tố bên trong AndroidManifest.xml của ABC, bằng cách nói:

<uses-library android:name="package name of XYZ" android:required="true" /> 

Hy vọng điều này giúp vấn đề của bạn.

+1

Cách tiếp cận này có thông báo cho người dùng rằng ứng dụng không thể được cài đặt vì ứng dụng đó yêu cầu ứng dụng phụ thuộc không? Nếu như vậy nó đưa họ ra thị trường? – Bear

+2

Hiệu ứng của cài đặt * uses-library * là ứng dụng sẽ được lọc bởi Market, vì vậy người dùng sẽ không thể xem ứng dụng * ABC * nếu * XYZ * chưa được cài đặt trong thiết bị: [ Bộ lọc thị trường] (http://developer.android.com/guide/appendix/market-filters.html) – Livio

Các vấn đề liên quan