اعتراض من الروابط من المتصفح لفتح بلدي الروبوت التطبيق

StackOverflow https://stackoverflow.com/questions/1609573

سؤال

أود أن تكون قادرة على موجه بلدي التطبيق لفتح ارتباط عندما ينقر المستخدم على رابط معين نمط بدلا من السماح المتصفح إلى فتحه.هذا يمكن أن يكون عندما يكون المستخدم على صفحة ويب في المستعرض أو في عميل البريد الإلكتروني أو في WebView في حديثا سكت التطبيق.

على سبيل المثال ، انقر على رابط يوتيوب من أي مكان في الهاتف وعليك أن تعطى فرصة لفتح التطبيق يوتيوب.

كيف يمكنني تحقيق هذا بلدي التطبيق ؟

هل كانت مفيدة؟

المحلول

استخدام الروبوت.القصد.العمل.عرض الفئة الروبوت.القصد.فئة.للتصفح.

من رومان الرجل Photostream التطبيق AndroidManifest.xml,

    <activity
        android:name=".PhotostreamActivity"
        android:label="@string/application_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:scheme="http"
                  android:host="flickr.com"
                  android:pathPrefix="/photos/" />
            <data android:scheme="http"
                  android:host="www.flickr.com"
                  android:pathPrefix="/photos/" />
        </intent-filter>
    </activity>

مرة واحدة داخل كنت في النشاط, أنت بحاجة إلى البحث عن العمل ، ومن ثم القيام بشيء ما مع عنوان URL لقد تم تسليم.على Intent.getData() الطريقة يعطيك Uri.

    final Intent intent = getIntent();
    final String action = intent.getAction();

    if (Intent.ACTION_VIEW.equals(action)) {
        final List<String> segments = intent.getData().getPathSegments();
        if (segments.size() > 1) {
            mUsername = segments.get(1);
        }
    }

وتجدر الإشارة إلى أن هذا التطبيق هو الحصول على القليل من التاريخ (1.2), لذلك قد تجد هناك أفضل الطرق لتحقيق ذلك.

نصائح أخرى

وهناك بعض المكتبات تحليل معلمات من رابط تلقائيا.

ومثل

https://github.com/airbnb/DeepLinkDispatch

و&&

https://github.com/mzule/ActivityRouter

وكتب في وقت لاحق واحدا تلو لي. التي يمكن تحليل المعلمات إلى نوع معين، وليس دائما سلسلة.

مثال

@Router(value = "main/:id" intExtra = "id")
...
int id = getIntent().getInt("id", 0);
private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        setUrlparams(url);

        if (url.indexOf("pattern") != -1) {
            // do something
            return false;
        } else {
            view.loadUrl(url);
        }

        return true;
    }

}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top