Android Intent-Filter для нескольких экранов - PullRequest
1 голос
/ 25 августа 2011

Я хочу запустить свое приложение из веб-браузера на Android с помощью Intent-Filter на основе схемы, размещенной в теге DATA следующим образом.

    <activity android:name=".activity.LogoActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".activity.phone.MainActivityPhone" android:configChanges="orientation|keyboard"
         android:launchMode="singleTask">
        <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="my" android:host="mystore" />
        </intent-filter>
    </activity>

    <activity android:name=".activity.tablet.MainActivityTablet"  android:configChanges="orientation|keyboard"
         android:launchMode="singleTask">
        <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="my" android:host="mystore" />     
        </intent-filter>
    </activity>

Как видите, есть два основных действия для телефона и планшета, и в LogoActivity определите, какое основное действие будет открыто по размеру экрана. Но проблема в том, что когда пользователь нажимает на ссылку my: // mystore в веб-браузере, есть два варианта запуска MainActivtyPhone и MainActivityTablet.

Что я хочу, так это то, что для uri my: // mystore работает только один правильный фильтр намерений. Любая помощь? Спасибо.

1 Ответ

1 голос
/ 25 августа 2011

При первом запуске приложения используйте PackageManager, чтобы отключить действие, которое вы не хотите использовать.

Пожалуйста, не изобретайте нестандартные схемы. Пожалуйста, используйте HTTP URL вместо:

<data android:scheme="http" android:host="yourdomain.com" android:path="/something/or/another" />

Таким образом, вы можете поместить настоящую веб-страницу на http://yourdomain.com/something/or/another, поэтому, если кто-то получит вашу ссылку, но не установит ваше приложение, он увидит вашу веб-страницу вместо сообщения об ошибке.

Также, пожалуйста, удалите android:configChanges или обработайте все изменения конфигурации.

...