5

私は2つの同様のアプリケーションを持っています(1つは無料、もう1つは有料)。

アクティビティは次のように定義されますexported="false"

    <activity
        android:name=".MyActivity"
        android:exported="false"
        android:noHistory="true" >
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="vnd.android.cursor.item/vnd.mine" />
        </intent-filter>
    </activity>

無料アプリから適切な暗黙の意図で電話をかけるstartActivityと、アクティビティピッカーが表示されます。

有料アプリのアクティビティが表示される理由がわかりません。exported="false"

URLに基​​づいてインテントフィルターを追加できると思いますが、私の質問は、ドキュメントが読み取ったときに他のアプリからのアクティビティが表示されるのはなぜですか?

アクティビティを他のアプリケーションのコンポーネントで起動できるかどうか

4

1 に答える 1

5

export = "false"であるため、有料アプリのアクティビティが表示される理由がわかりません

一致するものがあるため<intent-filter>。エクスポートされていないアクティビティにはは必要ないため、このアクティビティを開始するとき<intent-filter>は、それを削除して明示的に使用してください。Intent

ドキュメントが読み取ったときに他のアプリからのアクティビティが表示されるのはなぜですか...

私は同じ質問をしましたが、これは予期された動作であり、バグは役に立たないためにアプリにあると言われました<intent-filter>。ダイアン・ハックボーンの引用:

私は一般的にこれをアプリのバグと見なします-他のアプリの起動を許可していないアクティビティがある場合、なぜそれらが起動を試みるために一致するインテントフィルターを公開しているのですか?アクティビティのセキュリティ(エクスポートされていないか、許可が必要かどうか)は、インテントマッチングの一部ではありません。...このシナリオ(他のアプリケーションが使用する意図に一致するアクティビティを公開するが、他のアプリケーションが起動できないように制限する)は、完全に壊れていない限り役に立ちません。

于 2012-12-15T14:04:34.440 に答える