如何正确自动启动APP

时间:2013-04-18 16:34:29

标签: android service boot autostart

我的APP自动启动功能出现问题。

我在论坛上搜索过,看过很多建议,似乎都没有用,我不知道为什么。

这是 BootUpReciver.java

package com.???.???;

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

public class BootUpReciver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
        //Intent pushIntent = new Intent(context, BackgroundService.class);
        //context.startService(pushIntent);

        Toast.makeText(context, "Device Booted", Toast.LENGTH_LONG).show();
        Log.d("TAG","Device Booted");

    }
}
}

这是我的 Manifest 文件

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

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

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="17" />

<application
    android:theme="@android:style/Theme.Holo"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >

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

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>

    <activity
        android:name="com.???.???.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>

当我重新启动手机时,我甚至没有看到Toast,为什么?我该怎么办?我需要自动启动以获取一些sharedprefs并在每次启动时将值写入文件。

感谢。

1 个答案:

答案 0 :(得分:0)

在测试时我发现如果我在onReceive中显示吐司,那么它就没有显示出来。但是,如果我在onReceive中开始一项活动,那么它正在发挥作用。所以你也可以检查一下。启动活动或服务并在那里执行任务。