Android 8.0 App 安装卸载流程
程序员文章站
2022-03-29 12:41:41
此文章为了验证Android 8.0 安装,卸载和更新一个应用时广播的接受状态, 主要是更新一个应用时都会接收到那些广播, 先接收到那些广播, 下面就以一个简单的例子来验证这些:...
此文章为了验证Android 8.0 安装,卸载和更新一个应用时广播的接受状态, 主要是更新一个应用时都会接收到那些广播, 先接收到那些广播, 下面就以一个简单的例子来验证这些:
public class PackageInstallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //接收安装广播 if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) { String packageName = intent.getData().getSchemeSpecificPart(); Log.e("cjl","install app packageName = "+packageName); } //接收卸载广播 if (intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)) { String packageName = intent.getData().getSchemeSpecificPart(); Log.e("cjl","uninstall app packageName = "+packageName); boolean isReplace = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false); Log.e("cjl","isReplace = "+isReplace); } //接收升级更新广播 if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) { String packageName = intent.getData().getSchemeSpecificPart(); Log.e("cjl","upgrade app packageName = "+packageName); } } public IntentFilter getIntentFilter() { IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED); intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED); intentFilter.addDataScheme("package"); return intentFilter; } public void register(Context context) { context.registerReceiver(this, getIntentFilter()); } public void unregister(Context context) { context.unregisterReceiver(this); } }
新建一个广播接收器, 监听安装, 卸载和更新的广播, Android 在 8.0 之后禁止使用静态注册的方式去注册这些广播, 只能动态注册, 下面是代码:
public class MainActivity extends AppCompatActivity { private PackageInstallReceiver mReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mReceiver = new PackageInstallReceiver(); mReceiver.register(this); } @Override protected void onDestroy() { super.onDestroy(); mReceiver.unregister(this); } }
结果如截图所示:
安装流程
只收到安装广播
卸载广播
只收到卸载广播
更新流程:
更新的时候先收到卸载的广播, 然后收到安装的广播, 最后收到更新的广播
上一篇: WCF DEMO1 创建自托管宿主