2010-01-07 37 views
6

Tôi đang cố gắng nắm bắt mục đích tìm kiếm trên Android Market.Bắt ý định tìm kiếm thị trường?

Đó là cách bạn khởi động Android Market và tìm kiếm ứng dụng theo tên gói:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:com.google.somepackage"))); 

Bây giờ, đây là bộ lọc ý định cho một trong những hoạt động của tôi:

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:scheme="market" android:host="search" /> 
</intent-filter> 

tôi mong đợi Android hỏi tôi ứng dụng nào sẽ xử lý ý định không xảy ra.
Tuy nhiên, nếu tôi thay thế market bằng market1 hoặc search với search1, ở cả hai nơi, hoạt động của tôi sẽ được khởi chạy.
Có khái niệm về ý định "không chạm được" hay gì đó không?

TIA.

Trả lời

8

Điều đó thật kỳ quặc và kinda đi ngược lại toàn bộ hệ thống ý định mở. Tôi biết có những chương trình phát sóng mà chỉ có hệ thống mới có thể tạo ra, nhưng tôi đã không nghe nói về một điều như vậy cho mục đích giải quyết.

Dù sao, tôi vừa bán APK Market trên HTC Hero của mình và kiểm tra tệp kê khai. Họ đang là một chút cụ thể hơn trong URI khớp của họ bằng cách thêm đường dẫn:

<intent-filter android:priority="100"> 
    <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="market.android.com" android:path="/search" /> 
    <data android:scheme="market" 
      android:host="search" android:path="" /> 
</intent-filter> 

Tuy nhiên, tôi đã cố gắng thêm này để ứng dụng của tôi, ngoại trừ tôi tăng giá trị ưu tiên (not that I've seen that have any effect before), nhưng tôi vẫn không thể chụp Intent.

Hy vọng rằng ai đó (hoặc AOSP) có thể làm sáng tỏ tình hình ...

+13

Bằng cách đặt ưu tiên như thế này, không ứng dụng của bên thứ ba nào có thể chặn ý định. Chỉ những ứng dụng được cài đặt trong phân vùng hệ thống mới có thể được ưu tiên> 0. – hackbod

+1

Ah ha! Cảm ơn rất nhiều về thông tin. –

+2

@hackbod sẽ rất hay nếu có thể được thêm vào tài liệu http://developer.android.com/guide/topics/manifest/intent-filter-element.html#priority –

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