0

これは、ビューを追加するための私のコードです。

        LayoutInflater layoutInflater = (LayoutInflater) this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    TextView tv = (TextView) layoutInflater.inflate(R.layout.textview, null);
    final View view = tv;
    WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT, 25,
            WindowManager.LayoutParams.TYPE_STATUS_BAR,
            WindowManager.LayoutParams.FLAG_SCALED
            , PixelFormat.TRANSLUCENT);


    WindowManager wm = (WindowManager) getApplicationContext().getSystemService(WINDOW_SERVICE);
    wm.addView(view, lp);

しかし、それは私にエラーを与えるでしょう:

android.view.WindowManager $ BadTokenException:ウィンドウを追加できませんandroid.view.ViewRootImpl $ W@41668948-このウィンドウタイプの権限が拒否されました

だから私はアンドロイドマニファストに許可を追加します

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

しかし、それでもエラーがあります、私は助けが必要です!!

4

3 に答える 3

4

ステータスバーの上にビューを描画するために、これは非常に多くのスタックオーバーフローの投稿を読んだ後に私のために働いた組み合わせです:

1-サービスまたはアクティビティのいずれかにこのLayoutParametersのWindowManagerが必要です。

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
    WindowManager.LayoutParams.MATCH_PARENT, 
    statusBarHeight, 
    WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |       
    WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | 
    WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | 
    WindowManager.LayoutParams.FLAG_FULLSCREEN, 
    PixelFormat.TRANSLUCENT);

2-あなたはあなたのAndroidマニフェストでこの許可が必要です:

uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"

お役に立てば幸いです。私の場合、ユーザーが現在アクティブな通話中であることを示すために、ステータスバーを半透明の黄色または緑色で着色する必要がありました。

于 2014-06-05T21:46:53.110 に答える
0

わかりました、これは機能するはずです:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
于 2012-11-29T19:45:09.580 に答える
0

コードスニペットから、新しいステータスバーウィンドウを作成しようとしているようですが、これは不可能です。(ステータスバーが1つあり、システムUIによって管理されます。)

あなたがやろうとしていることを説明できますか?通常、 NotificationおよびNotificationManagerAPIを使用してステータスバーを操作します。

于 2012-12-05T04:44:57.940 に答える