gpt4 book ai didi

android - 使用 ApplicationInfo.FLAG_SYSTEM 过滤掉系统应用

转载 作者:太空狗 更新时间:2023-10-29 15:06:18 26 4
gpt4 key购买 nike

我使用以下代码来区分用户安装的应用程序和系统应用程序:

final PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages)
{
if ((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0)
Log.d(TAG, "Installed package (System) :" + packageInfo.packageName);
else
Log.d(TAG, "Installed package (User) :" + packageInfo.packageName);
}

这如何将一些应用程序作为用户安装的应用程序提供给实际上不是的应用程序。以下是我的模拟器中的 LogCat:

Installed package (User) :com.android.smoketest
Installed package (User) :com.android.widgetpreview
Installed package (User) :com.example.android.livecubes
Installed package (User) :com.example.android.apis
Installed package (User) :com.android.gesture.builder
Installed package (User) :com.example.android.softkeyboard
Installed package (User) :com.android.smoketest.tests
Installed package (User) :faheem.start

理想情况下,用户安装的应用程序中只应输出最后一个应用程序。

最佳答案

乌达夫·高塔姆

我认为您的答案在多个地方都是错误的。

  1. 您在链接中放置的代码明确指出:

    /** * Flags associated with the application. Any combination of

这意味着您的第三个示例(在 OR 之后)是完全错误的,因为值 0x1001 设置了 1 位但绝对不等于 1

  1. 由于对掩码 0x1 的与操作的结果总是 0x0 或 0x1,所以 != 0 和 == 1 之间没有区别

也就是说,我同意测试任何位被设置的正确方法是:

if ((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM) == ApplicationInfo.FLAG_SYSTEM)

关于android - 使用 ApplicationInfo.FLAG_SYSTEM 过滤掉系统应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21677603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com