如何通过可编程方式创建/禁用intent-filter?

mam*_*ido 11 android intentfilter

我在Android Manifest中有三个活动和三个Intent过滤器.

<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>
Run Code Online (Sandbox Code Playgroud)

如何根据选项禁用可编程的意图过滤器?或者我可以通过代码创建新的intent过滤器吗?

谢谢.

Com*_*are 28

您既不能以<intent-filter>编程方式启用,禁用或创建s.

但是,在您的情况下,<intent-filter>每个组件只有一个.在这种情况下,您可以通过和以编程方式启用和禁用组件.在您的情况下,启用或禁用活动将具有与启用或禁用活动相同的基本效果.PackageManagersetComponentEnabledSetting()<intent-filter>


Pio*_*zki 7

如果你的活动有多处intent-filter当时的你可以禁用特定intent-filter通过创建一个activity-aliasintent-filter要禁用,并仅禁用活动别名。请参阅:https : //developer.android.com/guide/topics/manifest/activity-alias-element.html


Ole*_*ich 5

意图过滤器是IntentFilter类的实例。但是,由于Android系统在启动该组件之前必须知道该组件的功能,因此通常不在Java代码中设置意图过滤器,而是在应用程序的清单文件(AndroidManifest.xml)中将其设置为元素。(一个例外是通过调用Context.registerReceiver()动态注册的广播接收器的筛选器;它们被直接创建为IntentFilter对象。)

来源:http : //developer.android.com/guide/components/intents-filters.html

另外,请参见:https//stackoverflow.com/a/10403074/832776