sopra_hs 2013-12-12 04:33 采纳率: 0%
浏览 1382

修改SystemUi 出错,请大神帮帮忙

我想在frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java加个对话框,报如下错误android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application;

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-01 15:15
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由于你试图添加一个没有应用的窗口造成的。在Android中,你可以使用WindowManager.addView()方法来创建和添加视图到系统视图管理器(WindowManager)。这个方法会抛出BadTokenException异常,除非你的应用程序具有权限。

    要解决这个问题,请确保你的应用程序具有以下权限:

    1. android.permission.WAKE_LOCK:用于唤醒锁定屏幕。
    2. android.permission.CHANGE_WIFI_STATE:用于改变Wi-Fi状态。
    3. android.permission.ACCESS_COARSE_LOCATION:用于获取位置信息。
    4. android.permission.READ_PHONE_STATE:用于读取手机状态信息。
    5. android.permission.WRITE_EXTERNAL_STORAGE:用于写入外部存储。
    6. android.permission.CALL_PHONE:用于拨打电话或发送短信。
    7. android.permission.RECEIVE_BOOT_COMPLETED:用于在启动时运行自定义代码。

    如果您的应用程序不具有这些权限,则需要请求这些权限,并且您可能需要重新申请这些权限才能解决问题。

    例如,如果您想要添加一个对话框,您可以这样做:

    import android.app.Dialog;
    import android.content.Context;
    import android.graphics.Color;
    import android.os.Bundle;
    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AlertDialog;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // 添加对话框
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("标题");
            builder.setMessage("这是一条消息");
            builder.setCancelable(false);  // 设置为不可取消的对话框
            builder.setPositiveButton("确定", (dialogInterface, i) -> {
                // 在这里处理确定按钮点击事件
            });
            builder.setNegativeButton("取消", (dialogInterface, i) -> {
                // 在这里处理取消按钮点击事件
            });
    
            builder.create().show();
        }
    }
    

    请注意,上述代码仅适用于Android Studio。在其他IDE中,您可能需要稍作调整。

    评论

报告相同问题?