Android Open Source - cicada Package Util






From Project

Back to project page cicada.

License

The source code is released under:

Apache License

If you think the Android project cicada listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

// Copyright (C) 2011 Cicada contributors
///*  w  w  w  . j  av a  2  s.c o m*/
// 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.package org.cicadasong.cicada;

package org.cicadasong.cicada;

import java.util.ArrayList;
import java.util.List;

import org.cicadasong.cicadalib.CicadaApp.AppType;

import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ServiceInfo;
import android.os.Bundle;
import android.util.Log;

public class PackageUtil {
  public static final String APP_TYPE_METADATA_KEY = "org.cicadasong.cicada.apptype";
  public static final String APP_LIST_PREF = "KnownApps";

  private PackageUtil() {
  }
  
  public static List<AppDescription> getCicadaAppsFromPackage(PackageManager pm, String packageName) {
    ArrayList<AppDescription> apps = new ArrayList<AppDescription>();
    
    try {
      PackageInfo pi = pm.getPackageInfo(packageName,
          PackageManager.GET_SERVICES | PackageManager.GET_META_DATA);
      if (pi == null || pi.services == null) {
        return apps;
      }
      for (ServiceInfo serviceInfo : pi.services) {
        Bundle metadata = serviceInfo.metaData;
        if (metadata != null) {
          String appTypeString = serviceInfo.metaData.getString(APP_TYPE_METADATA_KEY);
          if (appTypeString != null) {
            if (!serviceInfo.exported) {
              Log.w(Cicada.TAG, "Found service \"" + serviceInfo.name + "\", but it doesn't have" +
                  " android:exported=\"true\" in its definition, so Cicada can't use it.");
            } else {
              AppType mode = AppType.APP;
              try {
                mode = AppType.valueOf(appTypeString);
              } catch (Exception e) {
                Log.w(Cicada.TAG, "Couldn't recognize app type \"" + appTypeString + "\" for " +
                    "service \"" + serviceInfo.name + "\", assuming " + mode.name());
              }
              AppDescription app = new AppDescription(packageName, serviceInfo.name, null,
                  serviceInfo.loadLabel(pm).toString(), mode);
              apps.add(app);
            }
          }
        }
      }
    } catch (NameNotFoundException e) {
      Log.w(Cicada.TAG, "PackageManager couldn't find package named: " + packageName);
    }
    
    return apps;
  }

}




Java Source Code List

com.hydraproductions.cicada.StopWatch.java
org.cicadasong.apollo.ApolloConfig.java
org.cicadasong.apollo.ApolloIntents.java
org.cicadasong.apollo.BitmapUtil.java
org.cicadasong.apollo.SimulatedDisplayView.java
org.cicadasong.cicada.AppDatabase.java
org.cicadasong.cicada.AppDescription.java
org.cicadasong.cicada.AppList.java
org.cicadasong.cicada.AppScanner.java
org.cicadasong.cicada.CicadaService.java
org.cicadasong.cicada.CicadaSettingsActivity.java
org.cicadasong.cicada.Cicada.java
org.cicadasong.cicada.DeviceService.java
org.cicadasong.cicada.HotkeySetupActivity.java
org.cicadasong.cicada.HotkeySetupEntry.java
org.cicadasong.cicada.MetaWatchConnection.java
org.cicadasong.cicada.NotificationRenderer.java
org.cicadasong.cicada.PackageMonitor.java
org.cicadasong.cicada.PackageUtil.java
org.cicadasong.cicada.PrefUtil.java
org.cicadasong.cicada.WidgetScreen.java
org.cicadasong.cicada.WidgetSetup.java
org.cicadasong.cicadalib.CicadaApp.java
org.cicadasong.cicadalib.CicadaIntents.java
org.cicadasong.cicadalib.CicadaNotificationManager.java
org.cicadasong.cicadalib.CicadaNotification.java
org.cicadasong.cicadalib.TextBlock.java
org.cicadasong.samples.bitly.Bitly.java
org.cicadasong.samples.digitalclock.DigitalClock.java
org.cicadasong.samples.hellocicada.HelloCicada.java
org.cicadasong.samples.nextbuses.NextBuses.java
org.cicadasong.samples.notificationdemo.NotificationDemo.java
org.cicadasong.samples.notifications.NotificationAccessibilityService.java
org.cicadasong.samples.notifications.Notifications.java
org.cicadasong.samples.quicktext.QuickTextSetup.java
org.cicadasong.samples.quicktext.QuickText.java
org.cicadasong.samples.smsnotifier.SMSBroadcastReceiver.java
org.cicadasong.samples.tubestatus.Preferences.java
org.cicadasong.samples.tubestatus.TubeStatusSettingsActivity.java
org.cicadasong.samples.tubestatus.TubeStatus.java
org.cicadasong.samples.webimageplayer.Preferences.java
org.cicadasong.samples.webimageplayer.WebImagePlayerSettingsActivity.java
org.cicadasong.samples.webimageplayer.WebImagePlayer.java