当前位置: 首页 > 知识库问答 >
问题:

Android什么应用喜欢来电通知

常自强
2023-03-14

正在开发一个 voip 应用程序。有一个后台服务显示来电通知,当手机未锁定且应用处于后台状态时,该服务按预期工作(显示来电对话框)。

我如何生成一个带有交互式按钮的对话,如whatsapp来电通知;即使手机被锁定?

有关于这个的任何信息或我可以查阅的文档吗?

我可以为来电发送一个app通知,但这似乎还不够。我需要一个全吹对话框界面,它有一个按钮或类似的按钮,反过来会打开应用程序。

我使用Quickblox作为voip服务提供商。

先谢谢你

我试过解锁手机,按一下按钮。

这是我从后台服务打开对话框的代码。

viewToShowOnLockedScreen = View.inflate(getApplicationContext(), R.layout.activity_background_call, null);
        viewToShowOnLockedScreen.setTag(TAG);

        int top = getApplicationContext().getResources().getDisplayMetrics().heightPixels / 2;

        final WindowManager.LayoutParams mLayoutParams = new WindowManager.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT, Utils.dpToPx(300), 0, 0,
                WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                        | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                        | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                        | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON ,
                PixelFormat.RGBA_8888);
viewToShowOnLockedScreen.setVisibility(View.VISIBLE);
        Animation mAnimation = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.abc_slide_in_top);
        viewToShowOnLockedScreen.startAnimation(mAnimation);
        mWindowManager.addView(viewToShowOnLockedScreen, mLayoutParams);
        mWindowManager.updateViewLayout(viewToShowOnLockedScreen, mLayoutParams);

这是按下按钮解锁设备的代码。虽然这看起来像是解锁手机,但屏幕是亮的,但手机仍然被锁定。主页按钮不起作用。

KeyguardManager km = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
        final KeyguardManager.KeyguardLock kl = km .newKeyguardLock("MyKeyguardLock");
        kl.disableKeyguard();

    PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
    PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
            | PowerManager.ACQUIRE_CAUSES_WAKEUP
            | PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
    wakeLock.acquire();

共有1个答案

谢善
2023-03-14

不是真正的答案,我应该说是一个工作。

我无法解锁屏幕。但是我已经更新了应用程序来监听Intent.ACTION_USER_PRESENT,并在应用程序中添加了必要的逻辑,以便在用户在进线量点解锁设备后接听电话。这是代码。

mUnlockStatusFilter = new IntentFilter();
        mUnlockStatusFilter.addAction(Intent.ACTION_USER_PRESENT);
    mUnlockStateIntentReceiver = new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent i) {
                    if (i.getAction().equals(Intent.ACTION_USER_PRESENT)) {
                       //Do something phone is unlocked
                        Log.d(TAG,"Screen unlocked");
                        if(isWaitingForUnlock){
                            stopCallNotification();
                            if(Foreground.get().isForeground()){
                                Log.d(TAG, "App is in foreground; Sending a broadcast");
                                Intent intent = new Intent();
                                intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
                                intent.setAction(BaseActivityWithSignalling.onReceiveNewSession);
                                intent.putExtra("code", BaseActivityWithSignalling.onReceiveNewSessionCode);
                                sendBroadcast(intent);
                                Log.d(TAG, "Send broadcast for onReceiveNewSession");
                            }else{
                                Log.d(TAG, "App is in background; Showing activity");
                                Intent showCallingFromBG = new Intent(LMService.this, BackgroundCall.class);
                                showCallingFromBG.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                startActivity(showCallingFromBG);
                            }
                        }
                    }
                }
            };
    registerReceiver(mUnlockStateIntentReceiver, mUnlockStatusFilter);
 类似资料:
  • 问题内容: 是否可以在一个查询中将多个SQL LIKE通配符串在一起-像这样? 目的是查找同时包含通配符但没有特定顺序的记录。 问题答案: 正确的SQL语法是:

  • 本文向大家介绍你最喜欢用哪些编辑器?喜欢它的理由是什么?相关面试题,主要包含被问及你最喜欢用哪些编辑器?喜欢它的理由是什么?时的应答技巧和注意事项,需要的朋友参考一下 vscode。可以灵活安装不同插件,真正做到了一个编辑器,适配所有的编程语言。 它和virtual stuido理念不同,vs是想把所有的都集成到一起,导致它的安装包越来越庞大,臃肿,而vscode凭借插件运行机制,即插即用,非常灵

  • 喜欢资讯 取消喜欢资讯 资讯喜欢列表 喜欢资讯 POST /news/{news}/likes Response Headers Status: 201 Created 取消喜欢资讯 DELETE /news/{news}/likes Response Headers Status: 204 No Content 资讯喜欢列表 GET /news/{news}/likes Respons

  • 点喜欢 取消喜欢 喜欢的人列表 点喜欢 POST /feeds/:feed/like Response Status: 201 Created { "message": [ "操作成功" ] } 通知类型 { "channel": "feed:digg", // 通知关键字 "target": 325, // 动态id "content": "@2222 点喜欢了

  • 本文向大家介绍说说微信上你最喜欢的功能,以及为什么喜欢。相关面试题,主要包含被问及说说微信上你最喜欢的功能,以及为什么喜欢。时的应答技巧和注意事项,需要的朋友参考一下 喜欢: 1.小程序---节省了好多额外APP下载,大有“微信在手天下我有”的畅***;微信页下滑或搜索就可以很便捷地找到小程序的入口;与好友之间的分享也很方便。 2.订阅公众号---方便了解阅读各种感兴趣的信息与资讯;便于打发利用碎

  • 问题内容: 我有这样一行: Pylint显示警告: 这是为什么?列表理解是推荐的方法吗? 我当然可以这样重写: 而且我没有收到任何警告,但是我想知道是否为此有一个PEP? 问题答案: 皮林特(Pylint)经常谈论不该做的事情。您可以在.pylintrc文件中禁用警告。 此页面http://pylint-messages.wikidot.com/messages:w0141指示问题在于过滤器和映射