我想在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异常,除非你的应用程序具有权限。要解决这个问题,请确保你的应用程序具有以下权限:
android.permission.WAKE_LOCK:用于唤醒锁定屏幕。android.permission.CHANGE_WIFI_STATE:用于改变Wi-Fi状态。android.permission.ACCESS_COARSE_LOCATION:用于获取位置信息。android.permission.READ_PHONE_STATE:用于读取手机状态信息。android.permission.WRITE_EXTERNAL_STORAGE:用于写入外部存储。android.permission.CALL_PHONE:用于拨打电话或发送短信。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中,您可能需要稍作调整。
解决 无用评论 打赏 举报