kotlin 广播接收器应用程序活动启动

7ivaypg9  于 2023-04-07  发布在  Kotlin
关注(0)|答案(1)|浏览(217)

我正在制作一个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是否打开。

krcsximq

krcsximq1#

其实我自己找到了答案,那就是一切都是正确的,我只需要手动允许我的应用程序“绘制或允许超过其他应用程序”权限。
在清单中被提到为
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

相关问题