【问题标题】:Android : Activity not called from BroadcastReceiver when app is in backgroundAndroid:当应用程序处于后台时,未从 BroadcastReceiver 调用 Activity
【发布时间】:2021-01-18 21:12:01
【问题描述】:

当应用程序打开时,它工作正常,但当应用程序在后台时,调用 BroadcastReceiver 但活动意图不工作

  class FakeCallReceiver : BroadcastReceiver() {
    
        override fun onReceive(context: Context, intent: Intent?) {
            
            LogUtils.d("===onReceive 1")
            setCustomSetting(context)
            LogUtils.d("===onReceive 2")
            val incomingCallActivity =  Intent(context.applicationContext, FakeCallActivity::class.java)
            incomingCallActivity.flags = Intent.FLAG_ACTIVITY_NEW_TASK
            context.startActivity(incomingCallActivity)
            LogUtils.d("===onReceive 3")
        }

        fun setCustomSetting(context: Context){
            val wakeLock: PowerManager.WakeLock =
                (context.getSystemService(Context.POWER_SERVICE) as PowerManager).run {
                    newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag").apply {
                        acquire()
                    }
                }
            val mKeyguard = (context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager).apply {
                newKeyguardLock("MyApp::Keyguard").disableKeyguard()
            }        
        }
    }

所有日志都是打印的,没有发生异常但仍然没有调用FakeCallActivity

MinSdkVersion = 24
TargetSdkVersion = 29

1.我有错吗?
2. 应用在后台时是否有其他方法可以打开活动?

【问题讨论】:

  • 你试过了吗? stackoverflow.com/a/16666632
  • 您可以在此处添加设备详细信息吗?另外,添加minSdkVersiontargetSdkVersion
  • @Deepanshu androidMinSdkVersion = 24 androidTargetSdkVersion = 29 device os version = 8.1
  • @HimanshuChoudhary 是的,我试过了

标签: java android kotlin broadcastreceiver


【解决方案1】:

从 Android 10(API 级别 29)开始,从后台打开 Activity 会受到限制。检查这个 - https://developer.android.com/guide/components/activities/background-starts

您应该尽量避免这种情况,或者您可以检查这些异常 - https://developer.android.com/guide/components/activities/background-starts#exceptions。如果有任何例外对您有用,那么您可以尝试这样做。

【讨论】:

  • TrueCaller 如何打开对话框以及 whatsapp 如何打开即时回复对话框
  • @Sanjayrajsinh 您可以检查 Truecaller 获得的权限。它需要一些权限,使其可以覆盖其他应用程序。 Whatsapp 会发布通知而不是打开活动。在 Android 中,您可以创建具有回复功能的通知。
猜你喜欢
  • 1970-01-01
  • 2011-07-14
  • 2017-11-06
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 2021-10-02
相关资源
最近更新 更多