1

私のアプリが提供する機能の 1 つは、検索ボタンを長押ししてバックグラウンドで実行することを選択することです。アプリの設定画面でこの機能が有効になっていない場合でも、検索の長押しオプションに表示されるアクティビティ。この場合、アプリのオプションがプログラムで長押し検索オプションに表示されないようにする方法はありますか?

これは、マニフェストでアクティビティを定義する方法です。

       <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>
4

1 に答える 1

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);
于 2014-01-27T18:32:02.743 に答える