Domanda

Ho un'attività che posso dichiarare come categoria Launcher e si lancia bene dalla schermata iniziale. Tuttavia, quando provo a collegare-up la stessa attività nella mia attività di impostazioni di SyncAdapter e aprirlo dalla pagina Account e sincronizzazione -> MySyncAdapter -.> (Conto tocco messa in vendita) si interrompe con un errore irreversibile di sistema (riavvia telefono)

Nel frattempo, la mia SyncAdapter sta lavorando per altri aspetti.

Ecco il registro al punto di impatto:

01-13 12:31:00.976  5024  5038 I ActivityManager: Starting activity: Intent { act=android.provider.Settings.ACTION_SYNC_SETTINGS flg=0x10000000 cmp=com.myapp.android.syncadapter.ui/SyncAdapterSettingsActivity.class (has extras) }
01-13 12:31:00.985  5024  5038 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: android.server.ServerThread
01-13 12:31:00.985  5024  5038 E AndroidRuntime: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.myapp.android.syncadapter.ui/SyncAdapterSettingsActivity.class}; have you declared this activity in your AndroidManifest.xml?
01-13 12:31:00.985  5024  5038 E AndroidRuntime:    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404)
01-13 12:31:00.985  5024  5038 E AndroidRuntime:    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
01-13 12:31:00.985  5024  5038 E AndroidRuntime:    at android.app.ContextImpl.startActivity(ContextImpl.java:622)
01-13 12:31:00.985  5024  5038 E AndroidRuntime:    at android.preference.Preference.performClick(Preference.java:828)
01-13 12:31:00.985  5024  5038 E AndroidRuntime:    at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:190)
01-13 12:31:00.985  5024  5038 E AndroidRuntime:    at android.widget.AdapterView.performItemClick(AdapterView.java:284)
01-13 12:31:00.985  5024  5038 E AndroidRuntime:    at android.widget.ListView.performItemClick(ListView.java:3382)
01-13 12:31:00.985  5024  5038 E AndroidRuntime:    at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
01-13 12:31:00.985  5024  5038 E AndroidRuntime:    at android.os.Handler.handleCallback(Handler.java:587)
01-13 12:31:00.985  5024  5038 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:92)
01-13 12:31:00.985  5024  5038 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:123)
01-13 12:31:00.985  5024  5038 E AndroidRuntime:    at com.android.server.ServerThread.run(SystemServer.java:517)
01-13 12:31:00.985  5024  5038 I Process : Sending signal. PID: 5024 SIG: 9
01-13 12:31:01.005  5019  5019 I Zygote  : Exit zygote because system server (5024) has terminated
01-13 12:31:01.015  1211  1211 E installd: eof

Ecco un frammento del mio file manifesto:

   <activity android:name="com.myapp.android.syncadapter.ui.SyncAdapterSettingsActivity"
              android:label="@string/title_settings" 
              android:windowSoftInputMode="stateAlwaysHidden|adjustPan">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.provider.Settings.ACTION_SYNC_SETTINGS"/>
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

ho dimenticato il file di risorse XML (account_preferences.xml) a cui fa riferimento. Esso fornisce un altro livello di indirezione riferimento al nome del attività. Posso manipolarlo per ottenere la voce di registro al cambiamento di conseguenza. Quindi, penso che è un suggerimento per la soluzione. Il pacchetto di destinazione e classe di destinazione vengono concatenati insieme per definire il nome dell'attività per iniziare. Quello che ho notato nel registro è che c'è una barra (/) nel nome del percorso e penso che è per questo che è in grado di trovare l'attività. Ad esempio, se prendo il ( .ui ) dalla confezione e metterlo nel target-attività, quindi le mosse oblique siano prima di .ui nella percorso.

account_preferences.xml:

 <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="@string/format_auth_preferences" />
    <PreferenceScreen
         android:key="key_syncadapter_auth"
         android:title="@string/key_syncadapter_auth_action"
         android:summary="@string/key_syncadapter_auth_summary">
         <intent
             android:action="android.provider.Settings.ACTION_SYNC_SETTINGS"
             android:targetPackage="com.myapp.android.syncadapter.ui"
             android:targetClass=".SyncAdapterSettingsActivity" />
     </PreferenceScreen>
 </PreferenceScreen>

Registro frammento:

01-14 14:34:34.270 E/AndroidRuntime( 6374): *** FATAL EXCEPTION IN SYSTEM PROCESS: android.server.ServerThread
01-14 14:34:34.270 E/AndroidRuntime( 6374): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.myapp.android.syncadapter.ui/.SyncAdapterSettingsActivity}; have you declared this activity in your AndroidManifest.xml?
È stato utile?

Soluzione

I got it! Fondamentalmente, il pacchetto è il pacchetto radice e la classe di destinazione è il nome completo.

     <intent
         android:action="android.provider.Settings.ACTION_SYNC_SETTINGS"
         android:targetPackage="com.myapp.android.syncadapter"
         android:targetClass="com.myapp.android.syncadapter.ui.SyncAdapterSettingsActivity" />

Ho anche dovuto attentamente controllare il mio AndroidManifest per essere certi che i valori sono stati correttamente scritte in modo da poter corrispondere e che ho avuto un intent-filtro che è stato significativo per l'attività di rispondere a.

Ora devo implementare l'attività di impostazioni di configurazione e formattare il risultato in un Intent correttamente. Sento un'altra domanda proveniente da me:)

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