1

スキームに基づいた Intent-Filter を使用して Android の Web ブラウザからアプリケーションを起動し、このように 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>

ご覧のとおり、電話用とタブレット用の 2 つの Main アクティビティがあり、LogoActivity で画面サイズによってどのメイン アクティビティを開くかを決定します。しかし問題は、ユーザーが Web ブラウザーで my://mystore リンクをクリックしたときに、その MainActivtyPhone と MainActivityTablet を起動する 2 つの選択肢があることです。

私が望むのは、 uri my://mystore に対して機能する適切なインテント フィルターが 1 つだけであることです。何か助けはありますか?ありがとう。

4

1 に答える 1

1

アプリケーションの最初の実行時に、を使用して、使用PackageManagerしたくないアクティビティを無効にします。

カスタムスキームを発明しないでください。代わりにHTTPURLを使用してください。

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

そうすれば、実際にに実際のWebページを配置できるhttp://yourdomain.com/something/or/anotherため、誰かがリンクを取得してもアプリがインストールされていない場合、エラーが発生するのではなく、Webページが表示されます。

また、削除するか、すべての構成変更をandroid:configChanges処理してください。

于 2011-08-25T06:33:11.207 に答える