FP2-1725 : Fixed Privacy Impact ignoring deleted apps

Privacy Impact was ignoring re-installed apps.

Change-Id: I3faa2f34eef32685531fdd4d4c7eacf529c5cdf3
diff --git a/core/java/android/os/IPrivacyImpactService.aidl b/core/java/android/os/IPrivacyImpactService.aidl
index 8768b6a..7dfb97e 100644
--- a/core/java/android/os/IPrivacyImpactService.aidl
+++ b/core/java/android/os/IPrivacyImpactService.aidl
@@ -6,6 +6,7 @@
 interface IPrivacyImpactService {
     boolean showPackagePrivacy(String packageName);
     void disablePackagePrivacy(String packageName);
+    void enablePackagePrivacy(String packageName);
     void clearPackagePrivacyData();
     boolean isPrivacyImpactEnabled();
     void setPrivacyImpactStatus(boolean enabled);
diff --git a/packages/FairphonePrivacyImpact/AndroidManifest.xml b/packages/FairphonePrivacyImpact/AndroidManifest.xml
index 26ca98b..1d326b2 100644
--- a/packages/FairphonePrivacyImpact/AndroidManifest.xml
+++ b/packages/FairphonePrivacyImpact/AndroidManifest.xml
@@ -54,6 +54,16 @@
             </intent-filter>
         </activity>
 
+	<receiver
+            android:name="com.fairphone.privacyimpact.PackageRemovedReceiver"
+            android:enabled="true"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.intent.action.PACKAGE_REMOVED" />
+                <data android:scheme="package"/>
+            </intent-filter>
+        </receiver>
+
     </application>
 
 </manifest>
diff --git a/packages/FairphonePrivacyImpact/src/com/fairphone/privacyimpact/PackageRemovedReceiver.java b/packages/FairphonePrivacyImpact/src/com/fairphone/privacyimpact/PackageRemovedReceiver.java
new file mode 100644
index 0000000..f7ea11d
--- /dev/null
+++ b/packages/FairphonePrivacyImpact/src/com/fairphone/privacyimpact/PackageRemovedReceiver.java
@@ -0,0 +1,36 @@
+package com.fairphone.privacyimpact;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.util.Log;
+import android.net.Uri;
+
+import com.fairphone.privacyimpact.database.AppSettingsDatabaseHelper;
+
+/**
+ * Created by kwamecorp on 1/12/16.
+ */
+public class PackageRemovedReceiver extends BroadcastReceiver {
+    @Override
+    public void onReceive(Context context, Intent intent) {
+	if (intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)){
+            PackageManager pm = context.getPackageManager();
+//	    String[] packageNames = pm.getPackagesForUid(intent.getIntExtra(Intent.EXTRA_UID, 0));
+	    String packageName = getPackageName(intent);
+
+	if(packageName != null)
+            {
+		AppSettingsDatabaseHelper.removePackageName(packageName);
+        }
+    }
+}    
+   private String getPackageName(Intent intent) {
+        Uri uri = intent.getData();
+        String pkg = uri != null ? uri.getSchemeSpecificPart() : null;
+	return pkg;
+    }
+
+
+}
diff --git a/packages/FairphonePrivacyImpact/src/com/fairphone/privacyimpact/database/AppSettingsDatabaseHelper.java b/packages/FairphonePrivacyImpact/src/com/fairphone/privacyimpact/database/AppSettingsDatabaseHelper.java
index 19cef1d..8e9c22f 100644
--- a/packages/FairphonePrivacyImpact/src/com/fairphone/privacyimpact/database/AppSettingsDatabaseHelper.java
+++ b/packages/FairphonePrivacyImpact/src/com/fairphone/privacyimpact/database/AppSettingsDatabaseHelper.java
@@ -29,6 +29,16 @@
             Log.e(TAG, "Failed to set package "+packageName+" from service", e);
         }
     }
+
+   public static void removePackageName(String packageName){
+        try {
+            IPrivacyImpactService pis = IPrivacyImpactService.Stub.asInterface(ServiceManager.getService("PrivacyImpact"));
+            pis.enablePackagePrivacy(packageName);
+        } catch (Exception e) {
+            Log.e(TAG, "Failed to remove package "+packageName+" from service", e);
+        }
+    }
+
     
     public static void resetPrivacyDatabase(){
         try {
diff --git a/services/core/java/com/android/server/am/PrivacyImpactService.java b/services/core/java/com/android/server/am/PrivacyImpactService.java
index 62add20..139a82e 100644
--- a/services/core/java/com/android/server/am/PrivacyImpactService.java
+++ b/services/core/java/com/android/server/am/PrivacyImpactService.java
@@ -316,6 +316,14 @@
 
         db.insert(TABLE_NAME, null, values);
     }
+
+    public void enablePackagePrivacy(String packageName) {
+        Log.i(TAG, "Removing Package name: " + packageName);
+        SQLiteDatabase db = mHelper.getWritableDatabase();
+
+        int result = db.delete(TABLE_NAME, COLUMN_PACKAGE_NAME + " = ?", new String[]{packageName});
+    }
+
     
     public void clearPackagePrivacyData() {
         Log.i(TAG, "Clearing Privacy Impact database");