如何在android中检测到特定包的删除?

时间:2012-03-25 17:47:51

标签: android package

是否有可能检测到android中特定应用程序的删除?如果有,怎么样?这是我检测删除任何包的代码,如何更改它以检测所需的应用程序?

import android.content.*;
import android.util.Log;

public class PackageChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent intent) {
if(intent.getAction().equals("android.intent.action.PACKAGE_REMOVED"))   {Log.i("action","the package is removed");}
}
}

这是清单

<receiver android:name="PackageChangeReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
<data android:scheme="package"/>
</intent-filter>

1 个答案:

答案 0 :(得分:6)

我认为您不能过滤特定包名称的广播。但是,您可以在收到广播时轻松检索(然后测试)包名称:

Uri uri = intent.getData();
String pkg = uri != null ? uri.getSchemeSpecificPart() : null;

PackageMonitor上有一个很好的示例类DevDaily.com,它是上述代码片段的源代码。)