Я пытаюсь получить значок приложений переднего плана и преобразовать его в base64.Я могу получить имя приложения переднего плана, но не могу получить значок.Когда я кодирую это, я получаю строку, но это не значок.Я не уверен, где моя ошибка.Вот мой код
public class RunningServices {
private static Context context;
private static String ACTIVITY_SERVICE = "activity";
public RunningServices(Context myContext){
context = myContext;
}
public static RunningAppProcessInfo getRunningServices(){
RunningAppProcessInfo result = null, info = null;
String currentApplication;
ActivityManager am = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE);
Drawable icon = null;
PackageManager pm = context.getPackageManager();
List <RunningAppProcessInfo> l = am.getRunningAppProcesses();
Iterator <RunningAppProcessInfo> i = l.iterator();
while(i.hasNext()){
info = i.next();
if(info.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND){
try {
CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(info.processName, PackageManager.GET_META_DATA));
currentApplication= c.toString();
icon = pm.getApplicationIcon(pm.getApplicationInfo(info.processName, PackageManager.GET_META_DATA));
System.out.println(currentApplication);
System.out.println(icon);
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
}
encodeIcon(icon);
return result;
}
public static void encodeIcon(Drawable icon){
String appIcon64 = new String();
Drawable ic = icon;
if(ic !=null){
Bitmap bitmap = ((BitmapDrawable)ic).getBitmap();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// bitmap.compress(CompressFormat.PNG, 0, outputStream);
byte[] bitmapByte = outputStream.toByteArray();
bitmapByte = Base64.encode(bitmapByte,Base64.DEFAULT);
System.out.println(bitmapByte);
}
}
}
Заранее спасибо за помощь!