5

Tôi đang cố gắng xử lý các url của mình bằng cách sử dụng dạng mydomain.com hoặc www.mydomain.com với cả hai phương án httphttps. Hiện nay các thuộc tính IntentFilter cho hoạt động của tôi trông như thế này:Xử lý các URL cụ thể với bộ lọc chủ định trong Xamarin Mono cho Android

[IntentFilter(
    new[] { Intent.ActionView }, 
    Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable }, 
    DataHost = "mydomain.com", 
    DataScheme = "http" 
)] 

nào tạo này trong biểu hiện, và không xuất hiện để được làm việc cho bất kỳ cấu hình url yêu cầu:

<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:host="mydomain.com" android:scheme="http" /> 
</intent-filter> 

thế nào Tôi có thể thay đổi thuộc tính này để hoạt động của tôi sẽ xử lý tất cả các url của biểu mẫu http (s): // (www.) mydomain.com?

Trả lời

2

Bạn có thể thêm nhiều bộ lọc ý định thuộc tính

[IntentFilter(
    new[] { Intent.ActionView }, 
    Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable }, 
    DataHost = "mydomain.com", 
    DataScheme = "http" 
)] 
[IntentFilter(
    new[] { Intent.ActionView }, 
    Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable }, 
    DataHost = "mydomain.com", 
    DataScheme = "https" 
)] 
[IntentFilter(
    new[] { Intent.ActionView }, 
    Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable }, 
    DataHost = "*.mydomain.com", 
    DataScheme = "http" 
)] 
[IntentFilter(
    new[] { Intent.ActionView }, 
    Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable }, 
    DataHost = "*.mydomain.com", 
    DataScheme = "https" 
)] 
public class MyActivity : Activity {} 

xml kết quả sẽ là

<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:host="mydomain.com" android:scheme="http" /> 
</intent-filter> 
<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:host="mydomain.com" android:scheme="https" /> 
</intent-filter> 
<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:host="*.mydomain.com" android:scheme="http" /> 
</intent-filter> 
<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:host="*.mydomain.com" android:scheme="https" /> 
</intent-filter> 
+0

Tôi có cần thêm hai phiên bản thuộc tính IntentFilter khác để thêm bí danh 'www' cho cả hai lược đồ không? –

+0

Bạn có thể sử dụng ký tự đại diện cho tên miền phụ mà không thêm bộ lọc chủ định bổ sung. –

+0

Sẽ thật tuyệt nếu bạn nối thêm một ví dụ về cách sử dụng ký tự đại diện vào câu trả lời của bạn. –

2

nén IntentFilter duy nhất:

[ 
    IntentFilter 
    (
     new[] { Intent.ActionView }, 
     Categories = new[] 
      { 
       Intent.CategoryDefault, 
       Intent.CategoryBrowsable 
      }, 
     DataSchemes = new[] { "http", "https" }, 
     DataHosts = new[] { "*.xamarin.com", "xamarin.com" }, 
     DataMimeType = "text/plain" 
    ) 
] 

sẽ tạo ra sau nút AndroidManifest.xml:

<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:mimeType="text/plain" /> 
    <data android:host="*.xamarin.com" /> 
    <data android:host="xamarin.com" /> 
    <data android:scheme="http" /> 
    <data android:scheme="https" /> 
    </intent-filter> 
Các vấn đề liên quan