如何在重启后在android中自动启动我的应用程序?

时间:2016-03-26 10:49:08

标签: android service wakelock autostart

我已经使用了BootComplete并允许权限,它仍然无法自动启动,然后我尝试使用唤醒锁但它无法正常工作。此外,我尝试将其作为一项服务,但我的手机中没有弹出服务。我有什么遗漏的吗?

       public class BootComplete extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {

{
            // This is the Intent to deliver to our service.
            Intent serviceIntent = new Intent(context, AutoStartUp.class);
            context.startService(serviceIntent);

        }
    }

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
    }

}

在我的清单文件中:

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

 <service android:name=".SimpleWakefulReceiver">
            <intent-filter>
                <action android:name="com.example.SimpleWakefulReceiver"/>
            </intent-filter>
        </service>

        <receiver
            android:name=".MainActivity$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>

1 个答案:

答案 0 :(得分:0)

在onReceive中做任何你想做的事 -

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

    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    Log.e("BOOTUP", "received notification ......................");
    if(intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED))
    {
        Log.e("BOOTUP","RECEIVED BOOT NOTIFICATION ........");
        Intent start_service = new Intent(context,MainService.class);
        context.startService(start_service);
    }
}

在Manifest add-

<receiver
        android:name=".AutoStart"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

添加权限 -

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

此外,您需要至少从活动启动一次应用程序,并且您的块应该在清单

之外的块中