2

アプリで Mark Wei の素晴らしいライブラリ StandOut を使用しています: http://pingpongboss.github.io/StandOut/

私がやっていることはTrueCaller Appと非常によく似ています

着信時に自分のビューを表示しています。これは一般的にうまく機能します。

私の問題は何ですか?

非常に特殊なケースでは:

  • Android Marshmallow (6) のみ
  • キーガードロックON時

次に、アプリの StandOut ウィンドウが着信ウィンドウの背後に戻され、ほんの一瞬ちらつく以外は表示されません。

私は何を試しましたか?

これらのフラグを一緒に使用すると、次のようになります。

  • FLAG_DISMISS_KEYGUARD
  • FLAG_SHOW_WHEN_LOCKED

さらに(そして別々に)私はこの非推奨の方法を試しました:

KeyguardManager.KeyguardLock mLock;
KeyguardManager mKeyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
mLock = mKeyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
mLock.disableKeyguard();

これも失敗したとき、アプリの管理者権限を付与しようとしました(長いのでコード全体を追加しませんが、適切に実行しました)、これを試しました:

devicePolicyManager.setKeyguardDisabled(deviceAdmin,true);

注: TrueCaller アプリは非常にうまく機能しており、すべての通話で失敗するわけではないため、これが可能であることを知っていることをもう一度強調したいと思います。それを行う正しい方法を見つけるための助けが必要です。

前もって感謝します!

4

2 に答える 2

2

試してみるべき 3 つの提案がありますが (うまくいくかどうかはわかりません)、試してみる価値があります。

  1. これらのフラグを追加してみてください:

    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    
  2. StandOut ウィンドウ アクティビティを起動する前に、たとえば 2 秒の遅延を追加して、着信システム画面の後に来るようにしてください (後で、これで問題が解決した場合は、遅延を可能な限り減らします)。

  3. ウィンドウのプロパティにアクセスできるかどうかはわかりませんが、この解決策を見ました:

    「ピンロックのあるデバイスでオーバーレイが表示されないという同様の問題にも直面していました。うまくいった解決策は次のとおりです。

    mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
        mParams = new LayoutParams(
            LayoutParams.MATCH_PARENT,
            LayoutParams.WRAP_CONTENT,
            LayoutParams.TYPE_SYSTEM_ERROR,
            LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);
    

    そうだった

    LayoutParams.TYPE_SYSTEM_ERROR
    それが違いを生んだ。」

    類似の質問:真の発信者 Android アプリのように、Android ネイティブの着信通話画面にウィンドウをポップアップ表示します

ここにある何かがお役に立てば幸いです。解決したら更新してください。

更新:これは問題を解決しました:(これを追加):

LayoutParams.TYPE_SYSTEM_ERROR

レイアウトが膨張する前に必ずこれを追加してください。そうしないと何もしません。

于 2016-06-16T07:01:29.863 に答える
1

こんにちは 、私は同じ問題を抱えています...着信と発信の通話でアクティビティをポップアップするアプリを作成しようとしています...

私のアプリは、Android 6 と「KEYGUARD」がアクティブな場合を除き、うまく機能します。

解決策を見つけるのに役立ついくつかの方法を試しました

(TYPE_SYSTEM_ERROR)でウィンドウマネージャーを使用し、レイアウトを膨張させて着信呼び出しで画面を表示しようとしましたが、正常に機能し、システムコール画面Android 6でレイアウトを表示しましたが、別の問題が見つかりました..

このソリューションは、キーガードがパターンロックまたはパスロックによって保護されていない場合にのみ正常に機能します...キーガードがスワイプでロックを解除して機能し、ロックパターンがない場合、ソリューションは正常に機能しますが、キーガードに次のモデルがある場合ロックタイプ、カスタムアクティビティ画面がシステムコール画面に再び表示されますが、クリックリスナーやボタンコードなどのアクティビティのコードはまったく機能しません...

ところで、まさにあなたと私が作ろうとしているアプリをいくつか見つけました。ここで見つけることができます: Caller Screen OS9 ID Themes

これがあなたに役立つことを願っています。

解決策が見つかったら更新してください

下手な英語でごめんなさい

于 2016-06-26T22:16:27.673 に答える