没有Logcat打印或来自启动接收器的通知

时间:2016-06-15 00:21:41

标签: android broadcastreceiver

我有一个广播接收器扩展名为Bootup的类,我希望在关闭后设备首次启动时调用它。我已将其实现到我的其他应用程序中,因此我将该代码迁移到此应用程序并更改了所有必要的详细信息。

这是在清单XML文件中的应用程序标记下注册的方式:

<receiver android:enabled="true" android:name=".reveivers.Bootup"
    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>

这就是班级本身:

public class Bootup extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        //Received when the phone boots up

        //Do some stuff

        //Test notification to check if it worked. Doesn't show, but the method is valid code.
        playNotification(context, "Active English", "Bootup received!");

        //More code, then this bit to check if it works again
        Log.d("test", milliseconds + " _ " + System.currentTimeMillis());

        //Yet more code
    }

    private void playNotification(Context context, String name, String description){
        long[] vibrate = new long[2];
        vibrate[0] = 500;
        vibrate[1] = 1000;
        NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
            .setContentText(description)
            .setSmallIcon(R.drawable.notificationicon)
            .setLights(Color.GREEN, 500, 2000)
            .setAutoCancel(true)
            .setVibrate(vibrate)
            .setContentTitle(name);
        NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        manager.notify(1, builder.build());
    }

}

我现在告诉你,所有代码都有效。但无论出于何种原因,屏幕上都不会显示logcat消息和通知。 playNotification方法在其他应用程序中运行良好,因此不是问题。

这里有什么想法吗?

编辑:添加了通知方法的代码,以防万一对任何人都有用。

1 个答案:

答案 0 :(得分:0)

尝试添加RECEIVE_BOOT_COMPLETED权限。在应用程序标记之外的清单中添加以下行:

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