我正在制作一个Android闹钟应用程序,我想在闹钟时间到达时显示闹钟活动。问题是活动正在应用程序中打开,但应用程序不会自动启动。
无论应用程序是否打开,我都希望在闹钟时间到达时将闹钟活动置于前台。
清单文件
`<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="com.example">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application
//Removed unwanted parts
<receiver
android:name=".classes.AlarmReceiver"
android:enabled="true"
android:exported="true"
android:permission="TODO">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
这是我希望准时出现的报警活动。
class AlarmPage : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)supportRequestWindowFeature(Window.FEATURE_NO_TITLE);window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED,)
setContentView(R.layout.activity_alarm_page)
val mediaPlayer = MediaPlayer.create(this, R.raw.main_alarm)
mediaPlayer?.isLooping = true
mediaPlayer?.start()
findViewById<Button>(R.id.stop_button).setOnClickListener {
mediaPlayer?.stop()
mediaPlayer?.release()
finish()
}
}
}`
这是Alarm Receiver类
`class AlarmReceiver:public void run(){
override fun onReceive(context: Context, intent: Intent?) {
val launchIntent = Intent(context,AlarmPage::class.java)
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
context.startActivity(launchIntent)
}
}`
Alarm Receiver类会在此时打开Activity,但当我未使用应用程序或应用程序处于后台时,应用程序不会在此时自动打开,我必须手动打开应用程序以查看Activity是否打开。
1条答案
按热度按时间krcsximq1#
其实我自己找到了答案,那就是一切都是正确的,我只需要手动允许我的应用程序“绘制或允许超过其他应用程序”权限。
在清单中被提到为
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>