O iniciador personalizado do Android startActivity () bloqueia a intenção BOOT_COMPLETED

Atualmente, estou trabalhando em uma ROM personalizada (baseada no CyanogenMod 11.0), que visa implementar um "Modo de quiosque" personalizado. Para fazer isso, tenho três componentes em um aplicativo (com privilégios de sistema): O serviço, que lida com modificações na barra de status / navegação e desativa a tecla liga / desliga. O receptor, que somente inicia o serviço após oBOOT_COMPLETED sinal recebido. oHomeIntentWrapper funciona como o iniciador e inicia apenas uma atividade personalizada.

O problema que estou enfrentando atualmente é que ostartActivity(...) comando noHomeIntentWrapper de alguma forma impede o sistema de inicializar mais, e oBOOT_COMPLETED intenção nunca é enviada.

Eu verifiquei isso com oadb shell dumpsys activity comando, que me diz:

mStartedUsers:
  User #0: mState=BOOTING

Também não mostra oBOOT_COMPLETED transmissão já enviada.

Agora, se o usuário pressionar o botão Início, oBOOT_COMPLETED intenção é enviada e omState muda paraRUNNING.

Se eu não iniciar uma atividade noHomeIntentWrapper, a intenção é enviada. O que eu estou fazendo errado aqui?

AndroidManifest.xml:

<manifest coreApp="true">
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />    

    <application android:allowBackup="true"
                 android:persistent="true" >

        <service android:name="Service" 
                 android:process=":service" >
            </intent-filter>
        </service>

        <receiver android:name="Receiver" 
                  android:process=":receiver" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

        <activity android:name="HomeIntentWrapper"
                  android:process=":launcher" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Receptor:

public class Receiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        context.startService(new Intent(context, Service.class));
    }
} 

HomeIntentWrapper:

public class HomeIntentWrapper extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        startApp();
    }

    @Override
    protected void onResume() {
        super.onResume();
        startApp();
    }

    private void startApp() {
        SharedPreferences sharedPrefs = getSharedPreferences(getString(R.string.settings_file), Context.MODE_MULTI_PROCESS);
        String customAppIntentString = sharedPrefs.getString(getString(R.string.settings_custom_intent), "");

        if(customAppIntentString.equals("") == false) {
            try {
                Intent intent = Intent.getIntent(customAppIntentString);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
            } catch(java.net.URISyntaxException e) {
                // Intentionally
            }
        }
    }
}

questionAnswers(1)

yourAnswerToTheQuestion