2017-11-26 12 views
2

FBのような、フローティングウィジェットとしてチャットを利用できるウィジェットを持つアプリがあります。それはAndroidの下位バージョンでは完全に動作しますが、何らかの理由でAndroid 8.0では動作しません。私は、パーミッションの変更を読んでいると、私のAndroidManifest.xmlファイルに、私は宣言の両方の権限を持っている...アンドロイド8.0で動作しない他のアプリを引き継ぐ

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 
<uses-permission android:name="android.permission.TYPE_APPLICATION_OVERLAY"/> 

はその後、私の活動に私が許可をチェックしていますし、それが許可されている場合、それはに試みます新しいビューを追加...

if(Settings.canDrawOverlays(this)) { 
    initializeChatHeadsView(); 
} 

initializeChatHeadsView、ちょうどウィンドウにレイアウトを追加します。私は許可を有効にしている、私は私がデバイス上の設定に移動する場合、私はそれが許可を持っているので、 "他のアプリケーション上に表示"アクセス許可のページに記載されて私のアプリを見ることができますウィンドウ[email protected]を追加できません

...私は、ビューにアプリがクラッシュを追加しようと、私はメッセージを取得する - ウィンドウタイプ2002用に拒否された権限

なぜ動作しないのかわかりません。マニフェストには古いバージョンと新しいバージョンの両方のアクセス許可があり、システムは "canDrawOverlays"のチェックを行い、Android 8.0を実行しているものを除いて私が持っているすべてのエミュレータでうまく動作します。

必要に応じてもっと多くのコードを表示することができます。どんな助けも非常に高く評価されます。ありがとうございました。

答えて

2

問題が見つかりました。誰がアンドロイド8.0に他のアプリの上に描画アプリで問題を持っている場合は、私が

int layoutType; 
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { 
    layoutType = WindowManager.LayoutParams.TYPE_PHONE; 
} else { 
    layoutType = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; 
} 

params = new WindowManager.LayoutParams(
    WindowManager.LayoutParams.WRAP_CONTENT, 
    WindowManager.LayoutParams.WRAP_CONTENT, 
    layoutType, 
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
    PixelFormat.TRANSLUCENT 
); 

....私は窓を構築した方法を変更する必要がありましたそして今、それは完璧に動作します。

関連する問題