我正在尝试在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();
}
}
}
我已经明确许可。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
我想仅在启动或设备启动期间执行此条件,但每当我打开应用程序时,此条件都会满足。
请告诉我如何仅在设备启动或启动期间运行该条件。
请帮帮我。
答案 0 :(得分:4)
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>
...
BootReceiver.java:
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Do what you need to execute on boot here.
}
}
答案 1 :(得分:0)
类Intent
有一个名为ACTION_BOOT_COMPLETED
的字符串,它不是null(它有一个值)。那是你要检查的。你的意思是在BroadcastReceiver中完全不同。