2016-08-02 2 views
1

У меня возникли проблемы с получением кода для запуска при загрузке, я загрузил источник для примера, который должен работать, но это не так. в соответствии с примером, он должен производить тост, когда телефоны включаются, но этого не происходит, я тестировал на android 6.0 и 7.0.

любая помощь с благодарностью благодарит. код выглядит следующим образом:
Manifest:Запуск кода при загрузке андроида

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.androidautostartup" 
    android:versionCode="1" 
    android:versionName="1.0" > 

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

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="18" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <receiver 
      android:name=".BootComplete" 
      android:enabled="true" 
      android:exported="false" > 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 

     <service android:name=".AutoStartUp" > 
     </service> 

     <activity 
      android:name="com.example.androidautostartup.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

BootComplete.java

public class BootComplete extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) { 
      Intent serviceIntent = new Intent(context, AutoStartUp.class); 
      context.startService(serviceIntent); 
     } 
    } 
} 

AutoStartUp.java

public class AutoStartUp extends Service { 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); 
     // do something when the service is created 
    } 

} 

ответ

0

я действительно не рекомендовал бы делать вещи UI на рабочий нить (услуга). Хотя это можно сделать, это создает путаницу для того, чтобы пользователь мог получать сообщение вне контекста приложения.

Сказав, что, если вам нужно это сделать, вы должны использовать UI-код в потоке пользовательского интерфейса.

Handler handler = new Handler(Looper.getMainLooper()); 

handler.post(new Runnable() { 

     @Override 
     public void run() { 
      Toast.makeText(getContext(), "Service Started", Toast.LENGTH_LONG).show(); 
     } 
    }); 
+0

Извините, где я должен положить это? внутри метода onCreate? – user6548194

+0

вы могли бы называть его приемником. Или в любом обратном вызове жизненного цикла службы, в идеале onStart – jirungaray

+0

это просто дает мне сообщение об ошибке, не могу разрешить метод makeText anonymous java.lang.runnable, java.lang.string, int – user6548194

Смежные вопросы