2011-09-20 23 views

Trả lời

8

Có hai cách. Bạn có thể sử dụng số đã được đề cập getPackageManager()getApplicationInfo() (nếu không tìm thấy gói, PacketManager.NameNotFoundException sẽ bị ném - xem here). Tên gói của Android Market là com.android.vending.

Tuy nhiên, bạn cũng có thể tạo mục đích giả để tìm kiếm thị trường và kiểm tra xem nó được xử lý như thế nào. Nếu danh sách kết quả có ít nhất một entry, bạn có thể chắc chắn rằng Android Market được cài đặt:

Intent market = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=dummy")); 
PackageManager manager = getPackageManager(); 
List<ResolveInfo> list = manager.queryIntentActivities(mmarket, 0); 
+0

Is "com.android.vending "cũng là packageName trên Honeycomb (hoặc sau này) các thiết bị mà ứng dụng" MyApps "được sử dụng? Ngoài ra, kiểm tra ý định "thị trường: //" không đáng tin cậy vì các ứng dụng thị trường khác cũng sử dụng nó. –

+0

Tôi không thể nói chắc chắn khi nói đến com.android.vending và Honeycomb. Tuy nhiên, Nhà phát triển Android đề cập đến com.android.vending mà không có bất kỳ ghi chú cụ thể nào của Honeycomb (ví dụ: http://developer.android.com/guide/publishing/licensing.html), vì vậy tôi cho rằng nó hoạt động như mong đợi. – ernes7a

+1

Trên Kindle Fire, App Store của Amazon sẽ phản hồi thị trường: // URI. –

1

Đây là những gì tôi đã làm (giả định trình duyệt tồn tại):

Intent market = new Intent(Intent.ACTION_VIEW).setData(Uri 
     .parse("market://details?id=com.example.app")); 


Intent website = new Intent(Intent.ACTION_VIEW).setData(Uri 
     .parse("http://play.google.com/store/apps/details?id=com.example.app")); 

try { 

    startActivity(market); 

} catch (ActivityNotFoundException e) { 

    startActivity(website); 

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