[解決済み] Androidです。ウィンドウを追加できません。このウィンドウタイプに対するパーミッションが拒否されました。
質問
あるアプリケーションで、いくつかの情報を含むウィンドウを表示する必要があります。 オン をロック画面 (キーガード) に表示する必要があります。私はおそらく私がそれを行うことができると考え WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG でできると考えました。
しかし、私のアプリは毎回次のようなエラーでクラッシュします。
android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@40ec8528 -- permission denied for this ウィンドウタイプ
これらの投稿( はこちら , ここ そして はこちら など)いずれも同じ答えになります。 Manifestファイルに以下のパーミッションを追加する。
android.permission.SYSTEM_ALERT_WINDOWを追加します。
私が実装したソリューションですが、私はまだ同じエラーが表示されます。 私が間違ってやっていることのいずれかのアイデア?
以下は私のマニフェストファイルのパーミッションです。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.droidpilot.keyguardwindow" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
そして、これはロック画面に Window を追加するために使用しているコードです。
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
LayoutInflater mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mView = mInflater.inflate(R.layout.lock_screen_notif, null);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG,
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
PixelFormat.TRANSLUCENT
);
wm.addView(mView, params);
誰か心当たりはないですか?
追伸: Android 4.4.2 を実行している HTC Desire 620 DS でテストしています。
どのように解決するのですか?
完全に明白な理由であるはずです。 通常のアプリでは、ロック画面の上に任意のウィンドウを作成することはできません。 . もし私がロック画面にウィンドウを作成し、そのウィンドウが実際のロック画面を完全に模倣して、見分けがつかないようにしたらどうなると思いますか?
このエラーの技術的な理由は
TYPE_KEYGUARD_DIALOG
フラグです。
android.permission.INTERNAL_SYSTEM_WINDOW
という署名レベルの権限が必要です。つまり
同じ証明書
で署名されたアプリのみが使用できることを意味します。
の作成者は
android.permission.INTERNAL_SYSTEM_WINDOW
の作成者は Android システムそのものなので、あなたのアプリが OS の一部でない限り、チャンスはないでしょう。
の方法はよく定義され、よく文書化されています。 ロックスクリーンからの情報をユーザーに通知する . ロックスクリーンに表示されるカスタマイズされた通知を作成することができ、ユーザーはそれらと対話することができます。
関連
-
[解決済み] Android Studioにライブラリプロジェクトを追加する方法を教えてください。
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み】Android Studioです。jarをライブラリとして追加しますか?
-
[解決済み】例外「open failed: Androidで「EACCES (Permission denied)」という例外が発生する。
-
[解決済み】Android 1.6: "android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application" (ウィンドウを追加できません。
-
[解決済み] Androidの連絡先リストを呼び出すには?
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
-
[解決済み] react nativeアプリのバージョン番号を更新する方法
-
[解決済み] キャンバスに複数行のテキストを描画する
-
[解決済み] PendingIntentの "requestCode "は何に使うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ArrayAdapter<myClass> の使用方法
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] アプリ内課金テスト:android.test.purchased already owned
-
[解決済み] バイト配列の画像ファイルをビットマップに変換するには?
-
[解決済み] これはどういうことですか?失敗 [INSTALL_FAILED_CONTAINER_ERROR]?
-
[解決済み] Android - Snackbar vs Toast - 使い方と違い。
-
[解決済み] Android StudioからADBを手動で再起動する方法
-
[解決済み] 文字列リソースにHTML?
-
[解決済み] <string> XMLで改行やタブを作るには(eclipse/android)?