【问题标题】:Android lock screen notification is not able to open Browser on double tappingAndroid锁屏通知无法双击打开浏览器
【发布时间】:2017-01-10 03:12:18
【问题描述】:

我的应用会发出通知,点击时会打开带有给定 URL 的浏览器。实际上,封装后的 Intent 被发送到一个 BroadcastReceiver,这个广播接收器启动 Browser。

Intent browserIntent = new Intent(Intent.ACTION_VIEW, intent.getData());
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(showTaskIntent);

它适用于下拉通知栏上的通知,但不适用于锁定屏幕通知。双击无法打开浏览器。

从日志中,我可以看到 ActivityManager 收到了意图,并尝试启动 Broswer:

09-02 15:10:52.309 1536-1894/system_process I/ActivityManager: START u0 {act=android.intent.action.VIEW dat=https://www.thesun.co.uk/... flg=0x10000000 cmp=com.android.browser /.BrowserActivity} 来自 uid 10059 显示 0

但是浏览器发生了什么

09-02 15:10:52.910 12131-12131/com.android.browser I/art: 显式启动阻塞 GC 09-02 15:10:52.978 12131-12131/com.android.browser I/art: 显式并发标记扫描 GC 释放 44(1768B) AllocSpace 对象,0(0B) LOS 对象,15% 空闲,11MB/13MB,暂停427us 总计 63.223ms 09-02 15:10:52.980 12131-12131/com.android.browser I/art:启动阻塞 GC 显式 09-02 15:10:53.095 12131-12131/com.android.browser I/art: 显式并发标记扫描 GC 释放 5(160B) AllocSpace 对象,0(0B) LOS 对象,15% 空闲,11MB/13MB,暂停697us 总计 114.607ms 09-02 15:10:53.095 12131-12131/com.android.browser I/art:启动阻塞 GC 显式 09-02 15:10:53.255 12131-12131/com.android.browser I/art: 显式并发标记扫描 GC 释放 3(96B) AllocSpace 对象,0(0B) LOS 对象,15% 空闲,11MB/13MB,暂停42.926ms 总共 145.640ms

我的假设是:当时设备还处于锁屏状态,当ActivityManager传递启动Browser的intent时,Android系统可能有一些检查或机制不启动该Activity。

以前有人遇到过这样的问题吗?谢谢!

【问题讨论】:

    标签: android android-intent browser notifications lockscreen


    【解决方案1】:

    我认为这是 Chrome 中的一个错误,我已经向 Android 和 Chrome 提出了这个问题:

    https://code.google.com/p/android/issues/detail?id=221940&can=4&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened

    https://bugs.chromium.org/p/chromium/issues/detail?id=645848&can=4&q=&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner%20Summary%20OS%20Modified

    但是,我找到了一种解决方法:使用自定义标签而不是普通标签可以解决此问题

    intent.putExtra("android.support.customtabs.extra.SESSION", context.getPackageName());
    intent.putExtra("android.support.customtabs.extra.EXTRA_ENABLE_INSTANT_APPS", true);
    

    添加以上 Extras 以强制 Chrome 使用自定义标签。

    在此处了解更多信息:https://developer.chrome.com/multidevice/android/customtabs

    【讨论】:

      猜你喜欢
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 2020-05-05
      • 2017-09-17
      • 2017-07-13
      • 1970-01-01
      相关资源
      最近更新 更多