2010-10-13 44 views
22

Tôi có một ứng dụng đăng ký trình xử lý cho URI tùy chỉnh trên Điện thoại. Tôi có thể khởi chạy ứng dụng bằng cách tạo liên kết tới "myapp: // act/launch" từ các trang web điện thoại của tôi. Điều này chỉ hoạt động nếu ứng dụng của tôi được cài đặt trên thiết bị. Những gì tôi muốn làm là phát hiện nếu Lược đồ URI được hỗ trợ từ trình duyệt và sau đó nhắc thông báo của riêng tôi nói "vui lòng tải xuống ứng dụng, v.v ..." nếu trình xử lý cho lược đồ URI không được tìm thấy.Phát hiện một ứng dụng được cài đặt hay chưa?

Có cách nào tôi có thể phát hiện hoặc tìm danh sách trình xử lý Lược đồ URL trên Điện thoại từ Trình duyệt Web không?

+0

có thể trùng lặp của [Kiểm tra xem ứng dụng đã được cài đặt - Android] (http://stackoverflow.com/questions/18752202/check-if-application-is-installed-android) –

Trả lời

61

Từ Android How-to's

Nếu bạn đã bao giờ cần phải biết nếu một ứng dụng cụ thể được cài đặt trên thiết bị của người dùng, bạn có thể sử dụng PackageManager. Từ lớp Ngữ cảnh (ví dụ: Hoạt động hoặc Dịch vụ), bạn có thể gọi getPackageManager(). Điều này cung cấp cho bạn một loạt các phương thức, một trong số đó là getPackageInfo(). Dưới đây là một phương pháp bạn có thể sử dụng. Bạn có thể gọi nó là như thế này:

isAppInstalled("com.simexusa.campusmaps_full"); 

private boolean isAppInstalled(String packageName) { 
    PackageManager pm = getPackageManager(); 
    boolean installed = false; 
    try { 
     pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES); 
     installed = true; 
    } catch (PackageManager.NameNotFoundException e) { 
     installed = false; 
    } 
    return installed; 
} 
+13

Ông đặc biệt yêu cầu rằng nó được thực hiện từ một trình duyệt web. –

+3

Bất kể: "uri" có phải là tên đối số thích hợp với phương pháp không? PackageName có tốt hơn không? –

+0

@GlennBech: yes, _packageName_ mô tả hơn _uri_ –

14
  1. Bạn cần phải tạo một trang web mà người dùng truy cập nếu ứng dụng không là cài đặt. Nói http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html

  2. Ứng dụng cần phải đăng ký trong máy chủ tập tin XML manifest www.yourcompany.com, schema “http” và param đường dẫn đến ứng dụng không cài đặt trang đích trong bộ lọc ý định biểu hiện:

    <!-- These intents are used to launch the app from the web page--> 
    <intent-filter> 
        <action android:name="android.intent.action.VIEW" /> 
        <category android:name="android.intent.category.DEFAULT" /> 
        <category android:name="android.intent.category.BROWSABLE" /> 
        <data android:scheme="http" 
         android:host="www.yourcompany.com" 
         android:path="/android/android_app_is_not_installed_landing_page.html" 
        /> 
    </intent-filter> 
    
  3. Bây giờ trong trang web mà gọi ứng dụng của bạn, bạn chỉ định liên kết đầy đủ để android_app_is_not_installed_landing_page.html tiếp theo bất cứ điều gì params bạn muốn vượt qua các ứng dụng:

http://www.yourcompany.com/android/ android_app_is_not_installed_landing_page.html? '> Nhấn vào đây để khởi động ứng dụng nếu nó được cài đặt

Nếu ứng dụng được cài đặt, nó sẽ được đưa ra và thông qua toàn bộ http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html?' với mục đích cần phân tích cú pháp, trích xuất và làm bất cứ điều gì là phải làm.

Nếu ứng dụng chưa được cài đặt, khi đó trình duyệt web Android sẽ mở Trang đích “Ứng dụng Android chưa được cài đặt” http://www.yourcompany.com/android/android_app_is_not_installed_landing_page.html o . Trang đó sẽ thông báo cho người dùng cài đặt ứng dụng và cung cấp liên kết để cài đặt ứng dụng từ thị trường Android.

thấy câu này viết lên đây: https://groups.google.com/forum/m/?fromgroups#!topic/android-developers/RGLHkGUpRoA

+2

Vì vậy, tại sao các ổ đĩa bằng downvote, vì nó thực sự trả lời các câu hỏi ông đã yêu cầu? – boatcoder

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