15

Android マニフェストには、3 つのアクティビティと 3 つのインテント フィルターがあります。

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>                 
    </activity>
    <activity 
        android:name=".firstActivity"
        android:theme="@style/AppTheme" 
        android:label="@string/first">
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="image/*" />
        </intent-filter>  
   </activity>
    <activity 
        android:name=".secondActivity"
        android:theme="@style/AppTheme" 
        android:label="@string/second">
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="image/*" />
        </intent-filter>  
   </activity>
   <activity 
        android:name=".thirdActivity"
        android:theme="@style/AppTheme" 
        android:label="@string/third">
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="image/*" />
        </intent-filter>  
   </activity ></application>

一部のオプションに応じて、インテント フィルターをプログラムで無効にするにはどうすればよいですか? または、コードで新しいインテント フィルターを作成するにはどうすればよいですか?

ありがとう。

4

4 に答える 4

33

<intent-filter>プログラムで を有効化、無効化、または作成することはできません。

ただし、あなたの場合、<intent-filter>コンポーネントごとに 1 つしかありません。その場合、 および を使用して、プログラムでコンポーネントを有効または無効にすることができます。あなたの場合、アクティビティを有効または無効にすると、その.PackageManagersetComponentEnabledSetting()<intent-filter>

于 2013-01-03T15:45:47.913 に答える
6

インテント フィルタは、IntentFilter クラスのインスタンスです。ただし、Android システムはコンポーネントを起動する前にコンポーネントの機能を認識している必要があるため、インテント フィルターは通常 Java コードではなく、アプリケーションのマニフェスト ファイル (AndroidManifest.xml) で要素として設定されます。( 1 つの例外は、Context.registerReceiver() を呼び出すことによって動的に登録されるブロードキャスト レシーバーのフィルターです。これらは IntentFilter オブジェクトとして直接作成されます。)

ソース: http://developer.android.com/guide/components/intents-filters.html

また、これを参照してください: https://stackoverflow.com/a/10403074/832776

于 2013-01-03T15:45:19.533 に答える