Android - 从搜索按钮启动活动 - 从搜索长按选项中删除我的应用程序的活动

时间:2014-01-27 17:38:46

标签: android search android-activity long-press

我的应用程序提供的功能之一是在搜索按钮长按时选择要在后台完成的操作。即使在我的应用程序设置屏幕中未激活此功能,搜索长按选项中也会显示该活动。在这种情况下,有没有办法让我的应用程序选项不会以编程方式显示在搜索长按选项中?

这就是我在清单中定义活动的方式:

       <activity
            android:name="com.bill.deuterh.SearchButtonActivity"
             android:theme="@style/Theme.Transparent"
            android:label="@string/title_activity_search_button" >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.DEFAULT"/>
             </intent-filter>
             <intent-filter>
                 <action android:name="android.intent.action.SEARCH_LONG_PRESS"/>
                 <category android:name="android.intent.category.DEFAULT"/>
             </intent-filter>
        </activity>

1 个答案:

答案 0 :(得分:0)

将您的<intent-filter>拆分为2个单独的Activity,如下所示:

  <activity
        android:name="com.bill.deuterh.SearchButtonActivity"
         android:theme="@style/Theme.Transparent"
        android:label="@string/title_activity_search_button" >
         <intent-filter>
             <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.DEFAULT"/>
         </intent-filter>
    </activity>

    <activity-alias
        android:targetActivity="com.bill.deuterh.SearchButtonActivity"
        android:name="com.bill.deuterh.SearchButtonActivityAlias"
        android:enabled="false"
        android:label="@string/title_activity_search_button">
         <intent-filter>
             <action android:name="android.intent.action.SEARCH_LONG_PRESS"/>
             <category android:name="android.intent.category.DEFAULT"/>
         </intent-filter>
    </activity-alias>

您会注意到别名有enabled="false",这意味着此Activity的默认状态已被禁用。在此状态下,它不会显示在搜索长按选项列表中。

如果要启用搜索活动以使其显示在列表中,您只需使用PackageManager启用别名组件,如下所示:

    PackageManager pm = getPackageManager();
    pm.setComponentEnabledSetting(new ComponentName(this,
            "com.bill.deuterh.SearchButtonActivityAlias"),
            PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
            PackageManager.DONT_KILL_APP);

如果你想再次禁用它,你可以这样做:

    PackageManager pm = getPackageManager();
    pm.setComponentEnabledSetting(new ComponentName(this,
            "com.bill.deuterh.SearchButtonActivityAlias"),
            PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
            PackageManager.DONT_KILL_APP);