2016-10-25 2 views
0

Ich habe einige der Themen hier erläutert über das Starten einer App nach dem Start wie this one, aber es hat nicht für mich arbeiten. HierWie starte ich eine App nach dem Neustart/Start

ist MainActivity.java

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
} 

AfterBootReceiver.java:

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 


public class AfterBootReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals("Intent.ACTION_BOOT_COMPLETED")) { 
      Toast.makeText(context, "AfterBootReceiver - boot", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

Hier ist das Manifest mit dem Erlaubniscode:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.liorle.startappafterboot"> 

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

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="false" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver android:name=".AfterBootReceiver"> 
      <intent-filter> 
       <action android:name= "android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 
    </application> 
</manifest> 

Meine Fragen ist: tut jeder Sie sehen irgendein Problem mit diesem Code? Wie kann der Empfänger die Boot-Aktion von der Hauptaktivität erhalten?

Danke!

+1

Mögliche Duplikate von [Wie starte ich eine Anwendung beim Start?] (Http://stackoverflow.com/questions/6391902/how-to-start-an-application-on-startup) – Onik

+0

Nein, ich schrieb über die der Thread, den du erwähntest, hat mein Problem nicht gelöst –

Antwort

1

Sie müssen den Empfänger außerhalb Ihrer Hauptaktivität registrieren (in Ihrem Manifest), Android weiß nicht, dass Ihr BroadcastReceiver existiert, bis Ihre Aktivität gestartet wird. Sie müssen zu diesem Zweck auch Ihre eigene BroadcastReceiver-Implementierung erstellen.

<receiver android:name=".BootCompletedReceiver" > 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
    </intent-filter> 
</receiver> 

Sie können yourt Hauptaktivität von innen neu erstellten BroadcastReceiver (BootCompletedReceiver) starten.

Ihre Anwendung muss auch die Berechtigung RECEIVE_BOOT_COMPLETED anfordern.

+0

Danke, aber wenn ich keine geerbte BroadcastReceiver-Klasse habe, was muss ich registrieren? –

+0

Hey, ich habe gerade Ihren Vorschlag ausprobiert und nichts ist passiert :-( –

+0

Würden Sie bitte Ihre Frage bearbeiten, um Ihren aktualisierten Code anzuzeigen? –

0

Ihr Launcher lauscht nicht auf die BOOT_COMPLETED-Übertragung.

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 

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

Im aktuellen Status Ihrer Apps - die Hauptaktivität muss ausgeführt werden, um die BOOT_COMPLETED-Übertragung zu hören. Ihr Manifest muss etwas registriert haben, das das Ökosystem anweist, die Aktivität/den Empfänger zu aktivieren.

+0

Vielen Dank, aber ich habe mich nach deinem Vorschlag geändert, die App hochgeladen, mein Gerät neu gestartet und nichts passiert :-( –

+0

Entschuldigung - ich werde sehen, ob ich später etwas Code überprüfen und etwas laufen lassen kann –

+0

Hey, hast du irgendeinen funktionierenden Code gefunden? ? Danke! –

Verwandte Themen