package net.screenfreeze.deskcon;
import java.util.ArrayList;
import java.util.Arrays;
import android.annotation.SuppressLint;
import android.app.Notification;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.preference.PreferenceManager;
import android.service.notification.NotificationListenerService;
import android.service.notification.StatusBarNotification;
import android.util.Log;
@SuppressLint("NewApi")
public class NotificationUpdateService extends NotificationListenerService{
private static SharedPreferences sharedPrefs;
@Override
public void onCreate() {
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
super.onCreate();
}
@Override
public void onNotificationPosted(StatusBarNotification not) {
// permissions
boolean send_other_notifications = sharedPrefs.getBoolean("send_other_notifications", false);
ArrayList<String> whitelist = getNotificationWhitelist();
String packagename = not.getPackageName();
if (send_other_notifications && whitelist.contains(packagename)) {
Log.d("Notification: ", "new post");
Notification notification = not.getNotification();
String text = getAppnameFromPackagename(packagename) + " " +
notification.tickerText.toString();
startUpdateServiceCommand(text);
}
}
@Override
public void onNotificationRemoved(StatusBarNotification arg0) {
}
private ArrayList<String> getNotificationWhitelist() {
String whiteliststr = sharedPrefs.getString("notification_whitelist", "");
ArrayList<String> whitelist = new ArrayList<String>();
if (whiteliststr.equals("")) {
whitelist = new ArrayList<String>();
}
else {
whitelist = new ArrayList<String>(Arrays.<String>asList((whiteliststr.split(", "))));
}
return whitelist;
}
//send specific Command
private void startUpdateServiceCommand(String mess) {
Intent i = new Intent(getBaseContext(), StatusUpdateService.class);
i.putExtra("commandtype", "OTH_NOT");
i.putExtra("message", mess);
Log.d("Notification: ", "send text");
startService(i);
}
private String getAppnameFromPackagename(String pname) {
PackageManager packageManager = this.getPackageManager();
try {
ApplicationInfo app = packageManager.getApplicationInfo(pname, 0);
//Drawable icon = packageManager.getApplicationIcon(app);
String name = packageManager.getApplicationLabel(app).toString();
return name;
} catch (NameNotFoundException e) {
return "";
}
}
}