PackageInstaller

作者: android_Pie | 来源:发表于2020-04-20 19:34 被阅读0次

    PackageInstaller 只是提供了一个用户界面给用户来管理应用的安装。PackageInstaller 会调用一个叫 InstallAppProgress 的 Activity 来获得请求。 接下来,InstallAppProgress会与PackageManager服务进行交互,并通过 intalld 来安装文件。
    installd是一个系统守护程序,使用管理员权限进行操作。通过Linux套接字 /dev/socket/installd 来获取来自 PackageManager 的请求。
    安装完成后 PackageManager 会向系统广播事件 Intent.ACTION_PACKAGE_ADDED 或者 Intent.ACTION_PACKAGE_REPLACED

    //Android代码如何监控apk安装_卸载_替换 
    public class GetBroadcast extends BroadcastReceiver {
    private static GetBroadcast mReceiver = new GetBroadcast();
    private static IntentFilter mIntentFilter;
    
    public static void registerReceiver(Context context) {
    mIntentFilter = new IntentFilter();
    mIntentFilter.addDataScheme("package");
    mIntentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
    mIntentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
    mIntentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
    context.registerReceiver(mReceiver, mIntentFilter);
    }
    
    public static void unregisterReceiver(Context context) {
    context.unregisterReceiver(mReceiver);
    }
    
    @Override
    public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    if (Intent.ACTION_PACKAGE_ADDED.equals(action)) {
    Toast.makeText(context, "有应用被添加", Toast.LENGTH_LONG).show();
    } else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
    Toast.makeText(context, "有应用被删除", Toast.LENGTH_LONG).show();
    }else if (Intent.ACTION_PACKAGE_REPLACED.equals(action)) {
    Toast.makeText(context, "有应用被替换", Toast.LENGTH_LONG).show();
    }
    
    }
    }
    
     <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
    
    

    相关文章

      网友评论

        本文标题:PackageInstaller

        本文链接:https://www.haomeiwen.com/subject/rbvjihtx.html