Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否打算为所有用户卸载应用程序? 背景_Android_Android Intent_Android 5.0 Lollipop_Uninstallation_Multi User - Fatal编程技术网

Android 是否打算为所有用户卸载应用程序? 背景

Android 是否打算为所有用户卸载应用程序? 背景,android,android-intent,android-5.0-lollipop,uninstallation,multi-user,Android,Android Intent,Android 5.0 Lollipop,Uninstallation,Multi User,调用卸载应用程序的正常方式是使用以下意图: 问题 从Android版本开始(不记得是哪个版本),可以在同一台设备上为多个用户安装应用程序 这意味着有一种新的卸载应用程序的方法,可以为所有用户卸载它(图片取自Lollipop-Android 5.0): 问题 我在文档中搜索过,但找不到这些问题的答案: 有没有办法通过意图执行此操作?也许有什么东西可以补充我上面写的意图 ADB是否有为所有用户删除应用程序的新命令 有没有办法检查是否为多个用户安装了应用程序 有没有办法通过意图执行此操作?大概 我在

调用卸载应用程序的正常方式是使用以下意图:

问题 从Android版本开始(不记得是哪个版本),可以在同一台设备上为多个用户安装应用程序

这意味着有一种新的卸载应用程序的方法,可以为所有用户卸载它(图片取自Lollipop-Android 5.0):

问题 我在文档中搜索过,但找不到这些问题的答案:

  • 有没有办法通过意图执行此操作?也许有什么东西可以补充我上面写的意图

  • ADB是否有为所有用户删除应用程序的新命令

  • 有没有办法检查是否为多个用户安装了应用程序

  • 有没有办法通过意图执行此操作?大概 我在上面写的意图有什么补充吗

    是的,但是要小心。你可以进来

    但是,它是隐藏的,因为它:

    不应是正常应用程序流的一部分

    如果你觉得有必要并且不同意谷歌的观点,你可以直接输入常量。举个例子,下面是使用该常量传入
    false
    true
    之间的区别

        final Uri packageURI = Uri.parse("package:" + "some.package.name");
        final Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI);
        uninstallIntent.putExtra("android.intent.extra.UNINSTALL_ALL_USERS", false or true);
        startActivity(uninstallIntent);
    
    结果

    ADB是否有为所有用户删除应用程序的新命令

    不,命令保持不变

    `adb uninstall 'some.package.name'` 
    
    这将为所有用户删除该应用程序。我不知道指定特定用户的方法

    有没有办法检查是否为多个用户安装了应用程序

    不,我不知道。事实上,当设置应用程序决定在选项菜单中放置该选项时,基本上是基于是否有多个用户,而不是当前用户和其他用户都安装了应用程序

    更不用说,大多数方法中,你甚至需要知道设备上是否有多个用户,比如,需要系统API和隐藏的权限。所以,我甚至不知道为什么这是一个公共方法


    此外,通过在设备上创建虚拟用户,您可以轻松地测试所有问题,就像我做的那样。你甚至不需要登录谷歌账户

    这仍然适用于所有用户“adb卸载”@zoram真的吗?你测试过了吗?此外,是否可以使用ADB卸载指定/当前用户的应用程序?谢谢。我需要知道是否为我的应用程序(此处:)的多个用户安装了一个应用程序,以便我能够让用户选择是为所有用户卸载还是仅为当前用户卸载。多用户支持实际上是从Android 4.2开始的,我找不到所需的信息。我想我可以使用PackageManager->getPackagesForUid(此处:)来获取特定用户的软件包,但为了获取用户ID列表,我需要使用UserManager->getUserProfiles,然后使用getSerialNumberForUser“,但是”getUserProfiles需要API 21,甚至不能授予“管理用户”的权限(如您所写的)。。。无论如何,我会勾选你的答案,并创建一个新问题,你写的“它基本上是基于是否有多个用户”。我如何知道有多个用户帐户?在“/mnt/user”上至少有一个文件夹是否意味着有多个用户?此外,所有adb命令是否影响所有用户(如清除应用程序的数据),而不仅仅是当前用户?对于adb,您可以运行:
    adb卸载--user-1'some.package.name'
    -这意味着所有用户都要卸载,因为-1=
    UserHandle.user\u all
    if(userId==UserHandle.user\u all){userId=UserHandle.USER_OWNER;flags |=PackageManager.DELETE_ALL_USERS;}
    是否有类似onDestroy的函数?这样,用户卸载我的应用程序时,我可以运行代码。
    `adb uninstall 'some.package.name'`