如何知道应用程序将在android中被卸载?

我想实现类似于AppLock应用程序正在做的事情。
如果在其设置中将其设置为锁定应用程序卸载/安装,则在卸载任何应用程序(正好点击卸载按钮)时会出现锁定屏幕,要求输入密码/图案。
只有在输入密码后,用户才可以卸载该应用程序。

当点击卸载按钮时,这个意图是什么(或者什么,我认为它是一个意图,但不确定)?

另外我不想让它设备管理员,因为我提到的应用程序需要成为设备管理员。
如果他们能做到,那么有一些办法。 请帮忙。


我找到了一种方法。

  • 当你去设置 - > 管理应用程序 - > 点击任何应用程序
    你会得到一个包含演员名字的广播。

  • 当你点击该屏幕上的卸载按钮时,一个活动总是打开,名称为com.android.uninstaller.UnistallerActivity

  • 所以解决这个问题的方法是上面提到的1个和2个步骤的组合方式。

    当您获得第一步中提到的意图,并且额外内容包含您的应用程序的包名时,请使用PackageManager启动一个活动观察器,通过它可以获得最显眼的活动及其包。
    所以,现在如果启动卸载程序活动,那么您可以确定该用户想要卸载您的应用程序。

    在那之后你可以采取必要的行动阻止他这样做。


    你可以拦截你的应用程序的意图卸载。 只需将以下代码放入清单文件中即可:

    <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
    <uses-permission android:name="android.permission.DELETE_PACKAGES" />
    <uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
    
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".UninstallActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <action android:name="android.intent.action.DELETE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="package" android:pathPattern="com.package.yourapp" />
            </intent-filter>            
        </activity>
    </application>
    

    之后,您可以以某种方式处理您的应用程序将被删除,并调用软件包管理器卸载程序。


    改为设备管理员。 这会自动阻止用户卸载它。 如果用户尝试从安全>设备管理员列表中停用它以便将其卸载,则您的应用程序可以要求输入密码。

    链接地址: http://www.djcxy.com/p/41881.html

    上一篇: How to know that an app is going to be uninstalled in android?

    下一篇: How to properly handle intents?