Domanda

Uno dei miei colleghi stava cercando di caricare il mio APK da un sito Web interno e quindi aprirlo dall'installatore. L'applicazione si blocca al momento del lancio con il seguente stack e riferendosi a un'attività che non ho. Credo che sia perché (temporaneamente) ho due punti di iscrizione per la mia applicazione dal manifest, quindi è necessario un risolutore (scelta).

È vero?

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)

Ecco un pezzo del manifesto. Notare le attività di benvenuto e delle impostazioni. Entrambi hanno filtri intenti per Launcher con Main e questo è ciò che deve essere "risolto" prima di iniziare l'attività. Apparentemente altri installatori ne prendono uno (a caso, primo, ecc.)?

    <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>
È stato utile?

Soluzione

Avere più di un'attività che corrisponde al filtro per intenti può richiedere un resolver di scegliere tra le opzioni di corrispondenza. Rimuovi uno dei filtri di intenti principali / di avvio o aggiungi un risolutore con un dialogo SCHEOSER per l'avvio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top