后台服务或广播接收器

时间:2016-12-23 20:31:19

标签: android service android-broadcastreceiver

这是我正在处理的app locker应用程序。它锁定了Android手机中的所有应用程序。我想要做的是,当一个锁定的应用程序在Android中运行时,我的应用程序应该停止应用程序并显示密码或模式屏幕,如果模式是正确的,那么它应该运行应用程序否则禁用它。所以,我想问一下,我应该使用后台服务这样做,还是应该使用广播接收器?我不知道应用程序第一次运行时是否发送广播?如果我使用后台服务,它会在android重启时运行吗?我的意思是不再运行应用程序?请帮助我,以便我能理解它。谢谢。

2 个答案:

答案 0 :(得分:1)

后台服务可能是此类要求的更好选择。是的,您可以在使用BroadcastReceiver重新启动手机时启动后台服务。这是如何:

确保拥有此权限:

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

然后在application标签中,有这个接收器:

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

最后,BroadcastReceiver

public class MyBootReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
            Intent intent = new Intent(context, MyService.class);
            context.startService(intent);
        }
    }
}

这样,您的服务将在每次设备重新启动时启动。

希望这有帮助。

答案 1 :(得分:0)

使用需要添加android.permission.PACKAGE_USAGE_STATS来显示,如果您的Android版本是5.0及以上,请运行此代码以请求使用属性权限:

 Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
 startActivity(intent);