Khu*_*hah 12 android autostart broadcastreceiver android-intent
我想在其设置中创建一个具有自动启动选项的应用程序.我在我的应用程序中创建了一个从PreferenceActivity派生的Settings活动,并为自动启动选项提供CheckBoxPreference.如果启用了自动启动选项,我的应用程序应在启动手机时启动.如果禁用了自动启动选项,则它不应在启动完成时启动.
为了实现这一点,我实现了BroadcastReceiver的派生类,它接收BOOT_COMPLETED意图,在AndroidManifest.xml中声明接收器,并在AndroidManifest.xml中授予权限.
在应用程序中,还有一个派生类的Application和启动服务也来自应用程序派生类的onCreate方法.如果我在AndroidManifest.xml中声明接收器,那么在启动我的应用程序的onCreate之后调用,然后调用BroadcastReceiver的onReceive方法.
现在的问题是,无论是启用还是禁用自动启动,我的应用程序每次启动都会启动.禁用自动启动时是否可以不启动应用程序?
R.d*_*vaw 10
您可以使用共享首选项来存储布尔值isAutoStartEnabled,并在BroadcastReciver中检查此值,仅当它是真的时才触发它.
在您的情况下,问题不在于您是否收到广播,而是接收广播的人.祝你好运..
我希望它有帮助..
我认为从Android 3.1开始你的BroadcastReceiver接收BOOT_COMPLETED意图它不会工作.用户必须通过与之交互来唤醒应用程序.
因此,在启动设备后,所有第三方应用程序都在停止.
对于您目前的应用程序,您可以使用SharedPreferences自动启动应用程序..
更新:(仅适用于Android版本低于3.1高版本的它的工作原理,但你的引导完成设备之后有用户交互与应用程序)
您需要使用BroadcastReceiverwith android.intent.action.BOOT_COMPLETEDintent.
将以下内容添加到清单文件中:
<receiver android:name="App_Receiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
App_Receiver类实现BoradcastReciever.实施该onReceive()方法并从您的应用中启动您喜欢的活动.
public void onReceive(Context context, Intent intent) {
// make sure you receive "BOOT_COMPLETED"
// Here isAutoStartEnabled check sharedPreferences for Auto Start flag
if ( isAutoStartEnabled ) {
if ((intent.getAction() != null) && (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")))
{
// Start the service or activity
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25987 次 |
| 最近记录: |