首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭android 12崩溃中的通知抽屉

关闭android 12崩溃中的通知抽屉
EN

Stack Overflow用户
提问于 2022-11-29 07:43:38
回答 1查看 26关注 0票数 0

我试图在广播接收器中打开一个活动,但通知抽屉没有关闭。当ACTION_CLOSE_SYSTEM_DIALOGS被废弃的时候,这个应用程序崩溃了,还有其他的解决方案吗?

代码语言:javascript
复制
nLServiceReceiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        println("BroadcastReceiver----${intent.action}---------------/--/-/-/-/-/-/-/-")
        Handler(Looper.getMainLooper()).postDelayed({
            currentAppActivityList.clear()
            if(SDK_INT < 31){
                val closeIntent = Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)
                applicationContext.sendBroadcast(closeIntent)
            }
                      startActivity(applicationContext.packageManager.getLaunchIntentForPackage("${intent.action}"))
        }, 1000)

    }
}

在通知中有不同的按钮(动态),每个按钮定义不同的应用程序。因此,如果我点击按钮,它应该打开它指定的应用程序。

我已经尝试提供下面的挂起的意图

代码语言:javascript
复制
val intent1 = Intent(context.packageManager.getLaunchIntentForPackage(appInfo!![i].packageName))
val pendingIntent1 = PendingIntent.getActivity(this, 0, intent1, PendingIntent.FLAG_IMMUTABLE)

但是我想在应用程序启动之前做一些操作,所以我添加了广播接收器。

代码语言:javascript
复制
val pendingIntent1 = PendingIntent.getBroadcast(this, 0, Intent(appInfo!![i].packageName), PendingIntent.FLAG_IMMUTABLE)

它工作正常,但通知抽屉没有关闭。

EN

回答 1

Stack Overflow用户

发布于 2022-11-29 07:54:10

问题是关于克拉什,它在哪里?你不认为这对解决你的问题至关重要吗?放些日志,异常堆栈.

但我知道你得到了什么:ExceptionSecurityException。这是因为您使用的是对话,直接在文档中可以找到:

这个常量在API级别31中被废弃。出于安全考虑,从Android Build.VERSION_CODES#S开始的第三方应用程序不赞成这种意图。应用程序未经授权的使用将导致针对API级别低于Build.VERSION_CODES#S的应用程序被删除广播意图,而针对SDK级Build.VERSION_CODES#S或更高级别的应用程序则会出现SecurityException。从外壳启动的仪器(如。测试)仍然能够使用意图。该平台将在适当的用例中自动折叠适当的系统对话框。对于所有其他用户,用户是控制关闭对话框的人。

因此:

  • 现在只有用户或系统才能关闭通知抽屉。
  • 始终读取/发布异常堆栈跟踪
  • 读医生
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74610610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档