启动应用程序启动完成

时间:2013-09-18 09:23:30

标签: android android-intent broadcastreceiver android-manifest intentfilter

以下是我打开设备时用于启动应用程序的代码。

public class BootReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("BootReceiver","intent received");

        Intent myIntent = new Intent(context, ACT_Home.class);
        myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(myIntent);
    }

}

和Manifest(作为<Application>孩子):

<receiver android:name="host.alarmmanager.BootReceiver">
   <intent-filter >
      <action android:name="android.intent.action.BOOT_COMPLETED"/>
   </intent-filter>
</receiver>

Manifest中的权限如下:

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-feature android:name="android.hardware.camera"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>

这在Android 3.2.2上运行良好,但如果我在Android 4.0.3上尝试相同的应用程序,广播接收器不会收到任何内容。 此外,onReceive方法中的第一行未被强制执行。 为什么会这样?

3 个答案:

答案 0 :(得分:7)

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

这应该在android manifest中使用

答案 1 :(得分:2)

试试这个,虽然你的代码看起来很好!以下内容对我有用。

    <!-- Receivers -->
    <receiver android:enabled="true" android:name="host.alarmmanager.BootReceiver"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED">

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

答案 2 :(得分:0)

通过从电源菜单中选择重启选项,确保没有重新启动手机。

Android奇怪地拥有2种不同的权限。

  

1.Reboot

     

2.开机完成

所以, 首先关闭手机电源,然后再打开电源几秒钟!

希望它有所帮助! (Y)