0

複数のターゲットをビルドできるように、既存のアプリケーションをライブラリ プロジェクトに抽出しました。アプリケーションは、明示的なクラス名ではなく、アクション名を使用して相互に接続されています。各ターゲットには、明らかに、アクション名がクラス名にマップされた独自の AndroidManifest.xml ファイルがあります。

残念ながら、これらのビルド ターゲットが同じデバイスに 2 つある場合、アクションを実行すると、アプリ A とアプリ B のどちらでアクションを完了するかをユーザーに求めるメッセージが表示されます。

どうすればこれを防ぐことができますか? アクティビティ定義のエクスポートされた属性を false に設定しようとしました。これは役に立たないようです。

action android:name 属性をパッケージ プレフィックスで修飾できると思いますが、これは正しくありません。確かに、現在のアプリケーション内で定義されたアクションのみが解決されるように、または特定の名前のアクションがアプリの外部に公開されないように制限する方法はありますか?

    <activity android:exported="false"
         android:name="uk.myco.activities.EditChildFieldsActivity" 
         android:label="@string/app_name">
        <intent-filter>
            <action android:name="EditChildFields" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
4

1 に答える 1

0

上記のコメントに従って、私の場合は追加します

intent.setPackage(getApplicationContext().getPackageName())

望ましい効果がありました。

于 2013-02-05T12:01:31.950 に答える