包管理器名称未找到异常

use*_*725 10 android android-package-managers

我是安卓编程新手。我使用 Eclipse 以及 MainActivity.java 和 ClassFragment.java 文件创建了一个应用程序。ClassFragment 是一个片段。我正在使用新更新的 appcompat 库。我只想在我的片段中实现一个 toast,其中将显示应用程序的版本 vode 和版本名称。我使用了以下代码 PackageManager pInfo = getActivity().getPackageManager.getPackageInfo(getActivity().getPackageName, 0); ,但它显示 java 编译错误 PackageManager namenotfoundexception。请帮我解决这个问题。提前致谢。

Ram*_*shi 21

Android API 级别 30 中存在一项行为更改,因此当我们在 Android 11 上调用 getPackageInfo 时,即使用户设备上安装了应用程序/包应用程序,我们也会收到 NameNotFoundException。从 Android API 30 开始,我们需要在清单中指定包名称,以便检查该包是否安装在用户设备上。

<?xml version="1.0" encoding="utf-8"?>
<manifest 
 ...>
    <queries>
        <package android:name="com.example.Maps" />
    </queries>

    <application
       android:name=".Notes App"
    .../>

</manifest>
Run Code Online (Sandbox Code Playgroud)


Hto*_*ing 1

    PackageManager manager = getActivity().getPackageManager();
            PackageInfo info;
            try {
                info = manager.getPackageInfo(getActivity().getPackageName(), 0);
                String strVersion = "Version: " + info.versionName;
                String strVersionCode = " Build: "+ info.versionCode);
            } catch (NameNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
Run Code Online (Sandbox Code Playgroud)