2012-05-02 24 views
9

Tôi muốn ứng dụng của tôi phản hồi liên kết thị trường cho đơn đăng ký của tôi. Vì vậy, liên kết là thị trường: // details? Id = my.package.name. Bây giờ lý do tôi muốn điều này là vì vậy tôi có thể gửi một liên kết sẽ mở ứng dụng nếu nó được cài đặt và mở trang thị trường nếu ứng dụng không được cài đặt. Vấn đề tôi đang gặp phải là ứng dụng của tôi sẽ phản hồi tất cả các liên kết thị trường và không chỉ liên kết ứng dụng của tôi. Lý do là tên gói được định nghĩa trong phần truy vấn của Uri. Có cách nào để lọc một ý định dựa trên phần truy vấn của Uri?Bạn có thể tạo bộ lọc ý định dựa trên truy vấn không?

Trả lời

6

Không, xin lỗi, bạn không thể. Bạn có thể hạn chế bộ lọc dựa trên mọi thứ ở bên trái của ?, nhưng đó là nó.

+0

Cảm ơn câu trả lời. Nó giải thích tại sao tôi không thể làm việc này. Nó không được gọi thật rõ ràng trong các tài liệu. – charlest

6

Từ Android API 19, bạn có thể làm điều đó, sử dụng ssp, sspPrefix hoặc sspPattern. Ví dụ:

<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="https" 
     android:sspPrefix="//play.google.com/store/apps/details?id=com.example.test" 
    /> 
</intent-filter> 

Với bộ lọc như vậy, hệ điều hành sẽ cung cấp cho ứng dụng của bạn chỉ dành cho URL với id=com.example.test tham số, và sẽ không cung cấp nó khi không có tham số như vậy. Nhưng điều này chỉ hoạt động trên Android 4.4 trở lên, các phiên bản cũ hơn sẽ bỏ qua sspPrefix.

Xem thêm bài viết này: https://chris.orr.me.uk/android-ssp-data-intent-filter/.

+0

Phương pháp này không đáng tin cậy, ngay cả trên các thiết bị chạy Android 4.4+, xem tại đây https://stackoverflow.com/questions/46708662/android-sspprefix-is-ignored – CalumMcCall

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