NameNotFound调用PackageManager.getPackageInfo时发生异常

时间:2011-11-01 23:02:48

标签: android

我正在尝试将我的应用程序组织到包中,因为它将有几个全面的列表菜单。我尝试填充菜单的方法是在每个包中找到活动。

问题可能在于清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="machinists.toolkit"
android:versionCode="1"
android:versionName="1.0" android:installLocation="auto">

<uses-sdk android:minSdkVersion="8" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" android:debuggable="true">
    <activity
        android:label="@string/app_name" 
        android:name=".MTEActivity" 
        android:theme="@android:style/Theme.NoTitleBar">
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".ExceptionActivity"></activity>
    <activity android:name=".activities.ReferenceActivity"></activity>
    <activity android:name=".activities.CalculatorActivity"></activity>
    <activity android:name=".activities.reference.FormulasActivity"></activity>
    <activity android:name=".activities.reference.MaterialsActivity"></activity>
</application>

并且有问题的摘要是:

try {
        this.activities = this.packageManager.getPackageInfo(this.packageName, PackageManager.GET_ACTIVITIES).activities;
    } catch (NameNotFoundException e) {...

在这个例子中,this.packageName解决了machinist.toolkit.activities.reference

getPackageInfo方法调用包的全名,如果我理解,这应该是正确的。

知道出了什么问题吗?

感谢。

1 个答案:

答案 0 :(得分:2)

  

getPackageInfo方法调用包的全名,如果我理解,这应该是正确的。

没有。您混淆了类的包和应用程序的包。提供给getPackageInfo()的值是应用程序的包(即package元素中<manifest>属性的值。)