我正在尝试在Android中编写代码,以在引导过程中创建条件,但我的条件每次都满足(在引导以及设备运行期间)。我正在尝试做的是,仅在引导期间执行条件。
我的代码:
MainActivity.java
package com.example.bootingtest;
import android.os.Bundle;
import android.widget.Toast;
import android.app.Activity;
import android.content.Intent;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Intent.ACTION_BOOT_COMPLETED!=null) {
Toast.makeText(getApplicationContext(), "Device is booting ...", Toast.LENGTH_LONG).show();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已明确允许。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Run Code Online (Sandbox Code Playgroud)
我只想在启动或设备启动期间执行此条件,但是每次打开应用程序时,此条件都可以满足。
请向我建议如何仅在设备启动或启动期间运行条件。
请帮帮我。
该Intent.ACTION_BOOT_COMPLETED是一个常数,所以它的价值从未改变,这就是为什么你总是如此,你活动开始时。
您需要做的是在清单上声明一个BroadcastReceiver并实现它,而不是在声明上添加一个IntentFilter来接收广播。像这样:
AndroidManifest.xml:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
....
<receiver
android:name=".BootReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
...
BootReceiver.java:
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Do what you need to execute on boot here.
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3816 次 |
| 最近记录: |