2011-02-04 6 views
1

私の同僚の一人が、内部WebサイトからAPKをロードし、インストーラからそのAPKを開くことを試みていました。起動時に、次のスタックでアプリケーションがクラッシュし、持っていないアクティビティが参照されます。私はそれが私が(一時的に)マニフェストからの私のアプリケーションのための2つのエントリポイントを持っているため、リゾルバ(選択)が必要であると信じています。インストールからAndroid apkを起動すると、ResolverActivityが見つかりませんか?

これは本当ですか?

02-04 13:57:15.880 E/AndroidRuntime(4183): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.mycompany.android.myapp/com.android.internal.app.ResolverActivity}; have you declared this activity in your AndroidManifest.xml? 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.app.Activity.startActivityForResult(Activity.java:2758) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.app.Activity.startActivity(Activity.java:2864) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at com.android.packageinstaller.InstallAppProgress.onClick(InstallAppProgress.java:191) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.view.View.performClick(View.java:2420) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.view.View.onTouchEvent(View.java:4235) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.widget.TextView.onTouchEvent(TextView.java:6642) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.view.View.dispatchTouchEvent(View.java:3765) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1713) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1131) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.app.Activity.dispatchTouchEvent(Activity.java:2070) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1697) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1716) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.os.Looper.loop(Looper.java:123) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at java.lang.reflect.Method.invoke(Method.java:521) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 
02-04 13:57:15.880 E/AndroidRuntime(4183):  at dalvik.system.NativeStart.main(Native Method) 

ここにマニフェストの一部があります。ようこそと設定のアクティビティに注目してください。両方とも、LauncherとMainのインテントフィルターがあり、アクティビティーを開始する前に「解決」する必要があります。どうやら他のインストーラーは(ランダム、最初などの)1つをつかむだけですか?

<activity android:name=".ui.WelcomeActivity" 
       android:label="@string/title_welcome"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity>    

    <activity android:name=".ui.AboutActivity" 
       android:label="@string/title_edit_profile"> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".ui.SettingsActivity" 
       android:label="@string/title_settings" 
       android:windowSoftInputMode="stateAlwaysHidden|adjustPan"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <action android:name="android.provider.Settings.ACTION_SYNC_SETTINGS"/> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
+0

私たちにあなたのマニフェストを教えてください – Falmarri

+0

実際には、私のAPKの2番目のLAUNCHERエントリポイントを削除することで問題/修正を確認できました。まもなくマニフェストの重要な部分を追加します。アプリケーションでResolverアクティビティを構築することもできますが、これは設計要件ではなく、もう1つは一時的なハックでした。 – mobibob

答えて

0

インテントフィルタで一致するアクティビティが複数あると、リゾルバは一致するオプションの中から選択する必要があります。 MAIN/LAUNCHERインテントフィルタの1つを削除するか、または選択ダイアログを使用してリゾルバを追加して起動します。

関連する問題