FileDocCategorySizeDatePackage
Utils.javaAPI DocAndroid 1.5 API3506Wed May 06 22:42:48 BST 2009com.android.settings

Utils

public class Utils extends Object
Copyright (C) 2007 Google Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Fields Summary
public static final int
UPDATE_PREFERENCE_FLAG_SET_TITLE_TO_MATCHING_ACTIVITY
Set the preference's title to the matching activity's label.
Constructors Summary
Methods Summary
public static booleanupdatePreferenceToSpecificActivityOrRemove(android.content.Context context, android.preference.PreferenceGroup parentPreferenceGroup, java.lang.String preferenceKey, int flags)
Finds a matching activity for a preference's intent. If a matching activity is not found, it will remove the preference.

param
context The context.
param
parentPreferenceGroup The preference group that contains the preference whose intent is being resolved.
param
preferenceKey The key of the preference whose intent is being resolved.
param
flags 0 or one or more of {@link #UPDATE_PREFERENCE_FLAG_SET_TITLE_TO_MATCHING_ACTIVITY} .
return
Whether an activity was found. If false, the preference was removed.


                                                                                                                                       
        
                  
        
        Preference preference = parentPreferenceGroup.findPreference(preferenceKey);
        if (preference == null) {
            return false;
        }
        
        Intent intent = preference.getIntent();
        if (intent != null) {
            // Find the activity that is in the system image
            PackageManager pm = context.getPackageManager();
            List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);
            int listSize = list.size();
            for (int i = 0; i < listSize; i++) {
                ResolveInfo resolveInfo = list.get(i);
                if ((resolveInfo.activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)
                        != 0) {
                    
                    // Replace the intent with this specific activity
                    preference.setIntent(new Intent().setClassName(
                            resolveInfo.activityInfo.packageName,
                            resolveInfo.activityInfo.name));

                    if ((flags & UPDATE_PREFERENCE_FLAG_SET_TITLE_TO_MATCHING_ACTIVITY) != 0) {
                        // Set the preference title to the activity's label
                        preference.setTitle(resolveInfo.loadLabel(pm));
                    }
                    
                    return true;
                }
            }
        }

        // Did not find a matching activity, so remove the preference
        parentPreferenceGroup.removePreference(preference);
        
        return true;