Android-Boot Completed 在 Broadcastreceiver 中不起作用

标签 android google-tv

我正在使用 android(版本 4.1.1)MeLE box(SmartTv)来开发一个应用程序,我需要在设备启动时间完成时启动我的应用程序,但我的设备无法 catch BOOT_COMPLETED 操作。如果我在手机或模拟器中使用相同的应用程序,则 Boot_Completion 操作会被 Broadcast_receiver 捕获。

如果有人知道这个问题请帮助我提前致谢......

这是我的代码...

list :

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

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

<service android:name="NotifyingDailyService" >
</service>

BootCompletedReceiver 类:

public class BootCompletedReceiver extends BroadcastReceiver {
 @Override
public void onReceive(Context context, Intent arg1) {
// TODO Auto-generated method stub
Log.w("boot_broadcast_poc", "starting service...");
context.startService(new Intent(context, NotifyingDailyService.class));
}
}

服务等级:

public class NotifyingDailyService extends Service {

@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public int onStartCommand(Intent pIntent, int flags, int startId) {
// TODO Auto-generated method stub
Toast.makeText(this, "NotifyingDailyService", Toast.LENGTH_LONG).show();
Log.i("com.example.bootbroadcastpoc","NotifyingDailyService");

return super.onStartCommand(intent, flags, startId);
}
}

最佳答案

我注意到的一件事是您没有在 list 中为接收器设置类别。以下内容在我的应用程序中适用于我。

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

然后在我的 StartupBroadcastReceiver 中,我有以下内容

public void onReceive(Context context, Intent intent) {

    if (intent.getAction() == null) {
        return;
    }

    if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        boolean startupAfterBoot = prefs.getBoolean("serenity_boot_startup", false);
        if (startupAfterBoot) {
            Intent i = new Intent(context, MainActivity.class);
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        }
    }
}

启动完成后,这将启动 MainActivity 类。

项目代码的链接在这里:https://github.com/NineWorlds/serenity-android/blob/master/serenity-app/src/main/java/us/nineworlds/serenity/StartupBroadcastReceiver.java

关于Android-Boot Completed 在 Broadcastreceiver 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23491777/

相关文章:

android - google-tv 模拟器似乎已启动,但随后什么也没做

android - 使用 "if (convertView == null)"时 GridView 和图标困惑

java - Java 中的 AFOAuth2Client 等价物

Android JobIntentService ADB 错误 : Requires permission android. permission.BIND_JOB_SERVICE

Android GoogleTv 搜索按钮

java - 获取直播电视视频流(像素)

android - 带阴影的圆形按钮 5.0 FAB

android - USB_STATE 广播的附加功能

javascript - 不使用用户代理字符串检测 Google TV

android - 以编程方式在堆栈小部件中显示下一个/上一个图像