2011-11-01 21 views
0

몇 가지 포괄적 인 목록 메뉴가 있으므로 패키지로 응용 프로그램을 구성하려고합니다. 메뉴를 채우려는 방식은 각 패키지에서 활동을 찾는 것입니다.NameNotFound PackageManager.getPackageInfo를 호출 할 때 예외가 발생했습니다.

문제는 매니페스트있을 수 있습니다 :

<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> 

문제의 단편이다 this.packageName이 machinist.toolkit.activities에 해결이 경우

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

. 참조

getPackageInfo 메소드는 전체 이름 내가 이해한다면 그것은 정확해야합니다.

어떤 아이디어가 잘못 되었나요?

감사합니다.

답변

2

getPackageInfo 메소드는 패키지의 전체 이름을 필요로하며, 이해한다면 정확해야합니다.

아니요. 클래스 패키지와 응용 프로그램 패키지를 혼동합니다. getPackageInfo()에 제공된 값은 애플리케이션의 패키지입니다 (즉 요소에있는 package 속성의 값).

+0

오케이. 나는 그것이 그와 비슷한 것이라고 생각했다. 감사. –

+0

그래서 내가 원하는 정보를 얻기 위해 배열을 구문 분석해야하는지 아니면 뷰를 분리하는 더 좋은 방법이 있을지, 패키지에서 ActivityInfo [] 배열로 모든 액티비티를 가져온다면? –

+0

@ daedalus0x1a4 : Android에는 하위 패키지에 대한 실제 개념이 없으므로 결과를 반복하고 원하는 것을 필터링해야합니다. – CommonsWare

관련 문제