PackageManager的applicationInfo.name始终为null

发布于 2024-09-28 21:49:15 字数 637 浏览 2 评论 0原文

PackageManager pm = this.getPackageManager();
ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);

List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();

for(RunningAppProcessInfo process : runningAppProcesses) {
    try {
        ApplicationInfo ai = pm.getApplicationInfo(process.processName, PackageManager.GET_META_DATA);
        Log.d(TAG, applicationInfo.name + "");
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }
}

process.processName 返回有效的包名称,但 applicationInfo.name 始终为 null。

PackageManager pm = this.getPackageManager();
ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);

List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();

for(RunningAppProcessInfo process : runningAppProcesses) {
    try {
        ApplicationInfo ai = pm.getApplicationInfo(process.processName, PackageManager.GET_META_DATA);
        Log.d(TAG, applicationInfo.name + "");
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }
}

process.processName returns a valid package name but applicationInfo.name is always null.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

使用 applicationInfo.loadLabel(packageManagerInstance) 查找应用程序名称,但 applicationInfo.name 不起作用应该是有原因的。

Edit

applicationInfo.nameApplication 子类的名称(如果有的话)。

Used applicationInfo.loadLabel(packageManagerInstance) to find the Application name, but there should be a reason why applicationInfo.name didn't work.

Edit

applicationInfo.name is the name of a Application subclass if you have any.

南巷近海 2024-10-05 21:49:15

名称为 null 的原因是它确实是... null。

请参考Android清单文档:

android:name 完全限定名称
已实现的应用程序子类的
对于应用程序。当
申请流程开始,这
类在任何一个之前实例化
应用程序的组件。


子类是可选的;最多
应用程序不需要它。在
如果没有子类,Android 使用
基础应用程序的实例
类。

您想要的是应用程序的名称,该名称在应用程序标签的 label 属性中设置,Ragunath 解释了如何获取该名称。

The reason name is null is that it really is... null.

Please refer to the Android manifest documentation:

android:name The fully qualified name
of an Application subclass implemented
for the application. When the
application process is started, this
class is instantiated before any of
the application's components.

The
subclass is optional; most
applications won't need one. In the
absence of a subclass, Android uses an
instance of the base Application
class.

What you want is the name of the application, which is set in the label attribute of the application tag, and which Ragunath explained how to get.

新雨望断虹 2024-10-05 21:49:15

试试这个

Log.d(TAG, ai.processName + "");

或这个

Log.d(TAG, ai.packageName + "");

Try this

Log.d(TAG, ai.processName + "");

or this

Log.d(TAG, ai.packageName + "");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文