tra-loi-cau-hoi-phat-trien-web.com

Làm cách nào để mở một ứng dụng đã cài đặt từ một URL email trong Android?

Tôi muốn mở ứng dụng của mình từ một URL email, về cơ bản giống như ví dụ được hiển thị bên dưới cho Twitter.com .

Email có liên kết:

Email with link

Lựa chọn để mở ứng dụng hoặc trình duyệt:

Select app or browser

Sau khi bạn nhấp vào lựa chọn ứng dụng, ứng dụng Twitter sẽ mở ra:

Open Twitter app

Tôi đã thử đoạn mã sau, nhưng nó không hoạt động:

<intent-filter>
    <action Android:name="Android.intent.action.VIEW"></action>
    <category Android:name="Android.intent.category.DEFAULT"></category>
    <category Android:name="Android.intent.category.BROWSABLE"></category>
    <data Android:Host="www.Twitter.com" Android:scheme="http"></data>
</intent-filter>

Nếu bất cứ ai có câu trả lời thích hợp, xin vui lòng viết một số ví dụ ở đây.

18
Roadies

Các mã sau đây làm việc cho tôi:

<intent-filter>
    <action Android:name="Android.intent.action.VIEW"></action>

    <category Android:name="Android.intent.category.DEFAULT"></category>
    <category Android:name="Android.intent.category.BROWSABLE"></category>

    <data
        Android:Host="www.my.app.com"
        Android:path="launch"
        Android:scheme="http"></data>
</intent-filter>

Với liên kết email được đặt là http://www.my.app.com/launch.

Tham chiếu: Khởi chạy ứng dụng Android từ liên kết hoặc email

11
hemu

Chỉ cần đi qua tài liệu google Deeplinking này. Bạn sẽ đến để biết về khái niệm liên kết sâu sắc này.

Tôi hy vọng điều này sẽ giúp một số cơ thể.

9
Aristo Michael

Ví dụ: url của bạn sẽ giống như https://roadies.com và bạn có bộ lọc ý định trong bảng kê khai như bên dưới 

        Android:name="com.droid.MainActivity"
        Android:label="@string/app_name" >

        <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="roadies.com"
            Android:scheme="https" />
    </intent-filter>

    </activity>
3
Vny Kumar

Đối với tôi, không có câu trả lời được đăng ở đây làm việc. Tôi đã thử hàng chục cú pháp khác nhau mà không thành công. Tôi đã gặp một lỗi phân tích cú pháp trong khi xây dựng ứng dụng thông qua Cordova.

Cuối cùng tôi đã gặp điều này đã trả lời dẫn tôi đi đúng hướng. 

Vì vậy, tôi đã tạo một hook trong thư mục PROJECT_ROOT/hooks/after_prepare/ có tên 010_add_intent_filters.sh. Dưới đây là nội dung của cái móc này: 

!/usr/bin/bash

MANIFEST=./platforms/Android/AndroidManifest.xml

grep -q pathPattern $MANIFEST && { print "Manifest already modified. Nothing to do."; exit 0; }

AFTER_LINE='Android:name="MainActivity"'
ADDITION='\
  <intent-filter>\
    <action Android:name="Android.intent.action.VIEW"></action>\
    <category Android:name="Android.intent.category.DEFAULT"></category>\
    <category Android:name="Android.intent.category.BROWSABLE"></category>\
    <data Android:scheme="https" Android:Host="google.com" Android:pathPattern=".*"></data>\
  </intent-filter>
';

sed -i -e "/${AFTER_LINE}/a${ADDITION}" $MANIFEST

Điều này cuối cùng đã làm việc. Không cần sửa đổi đối với config.xml nếu bạn đi theo đường dẫn hook. Tôi hy vọng điều này sẽ giúp ai đó cần giúp đỡ.

Tái bút: Tôi tin rằng Cordova là một công nghệ tuyệt vời, nhưng tôi hiếm khi thấy một thư viện tài liệu tồi tệ như vậy ... Thật đau đớn khi làm việc với nó là điều không thể tin được. 

2
Alexandre Bourlier