2016-05-30 8 views
0

Ich habe eine App erstellt, die die zuletzt installierte App auf meinem Telefon abhört und benachrichtigt, wenn eine neue App installiert wurde. Im Moment meldet es mich korrekt für die letzte installierte App, aber es benachrichtigt mich auch, wenn irgendwelche Apps aktualisiert werden. Kann jemand JUST für die zuletzt installierte App hören und nicht darauf achten, wenn eine App ein Update durchläuft?Broadcast Receiver, der nach der zuletzt installierten App lauscht

Hier ist mein Code:

public class NewInstallReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 


    Log.d("tag_name", "NewInstallReceiver" + intent.getAction()); 

    final PackageManager pm = context.getPackageManager(); 
    ApplicationInfo ai; 
    try { 

     ai = pm.getApplicationInfo(intent.getData().getSchemeSpecificPart(), 0); 
     Log.d("tag_name", "Application Info" + ai); 

    } catch (final PackageManager.NameNotFoundException e) { 
     ai = null; 
    } 

    List<PackageInfo> packages = pm.getInstalledPackages(PackageManager.GET_META_DATA); 

    Collections.sort(packages, new Comparator<PackageInfo>() { 
     @Override 
     public int compare(PackageInfo p1, PackageInfo p2) { 
      return Long.toString(p2.firstInstallTime).compareTo(Long.toString(p1.firstInstallTime)); 
     } 
    }); 
} 
} 

Meine Absicht Filter für Broadcast-Receiver

<receiver android:name="com.example.natalie.listener.NewInstallReceiver"> 
     <intent-filter android:priority="100"> 
      <action 
       android:name="android.intent.action.PACKAGE_INSTALL"/> 
      <action 
       android:name="android.intent.action.PACKAGE_ADDED"/> 
      <action 
       android:name="android.intent.action.PACKAGE_DATA_CLEARED"/> 
      <action 
       android:name="android.intent.action.PACKAGE_REMOVED"/> 
      <data android:scheme="package"/> 
     </intent-filter> 
    </receiver> 
+0

Was sind die Aktionen, die Sie gerade hören? – jaibatrik

+0

@jaibatrik Derzeit, wenn ich die Paketinfo "ai" erhalte, bekomme ich die Paketinformationen von (1) neuen installierten Apps und (2) allen Apps, die gerade aktualisiert wurden. Und ich möchte nur Paketinformationen der zuletzt installierten App erhalten, nicht die aktualisierten. – Natalie

+0

Was ist der Intent Filter für 'NewInstallReceiver'? – jaibatrik

Antwort

0

Mit diesem Code, den Sie eine Anwendung auf dem Telefon, bevor installiert sehen:

PackageManager pm = context.getPackageManager(); 
ApplicationInfo appInfo = pm.getApplicationInfo("application package name", 0); 
String appFile = appInfo.sourceDir; 
long installed = new File(appFile).lastModified();