当我的应用程序尝试绘制系统覆盖图时,它会崩溃并告诉我2010窗口类型的权限被拒绝.但是,我要求用户ACTION_MANAGE_OVERLAY_PERMISSION在首次安装时授予教程活动.此外,这只发生在API 26上.我测试了所有其他支持的SDK,我能够绘制一个没有崩溃或错误的叠加层.
我用过
Settings.canDrawOverlay(context);
Run Code Online (Sandbox Code Playgroud)
它返回true.因此,似乎系统知道授予许可但问题仍然存在.
这是覆盖代码:
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.view_driving, mRelativeLayout);
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
PixelFormat.TRANSLUCENT);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
layoutParams.flags = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
} else{
layoutParams.flags = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
}
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
layoutParams.flags = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
}
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
layoutParams.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
mRelativeLayout.setSystemUiVisibility(uiOptions);
if(Settings.canDrawOverlays(mContext)){
WindowManager windowManager = (WindowManager) mContext.getSystemService(WINDOW_SERVICE);
windowManager.addView(mRelativeLayout, layoutParams); …Run Code Online (Sandbox Code Playgroud) 调试我的程序时,我不断收到这两个错误:
main.obj:错误LNK2005:"class std :: basic_istream>&__cdecl operator >>(class std :: basic_istream>&,class Complex&)"(?? 5 @ YAAAV?$ basic_istream @ DU?$ char_traits @ D @ std @@@ std @@ AAV01 @ AAVComplex @@@ Z)已在Imaginary.obj中定义
1> main.obj:错误LNK2005:"class std :: basic_ostream>&__ cdecl operator <<(class std :: basic_ostream>&,class complex const&)"(?? 6 @ YAAAV?$ basic_ostream @ DU?$ char_traits @ D @ std @@@ std @@ AAV01 @ ABVComplex @@@ Z)已在Imaginary.obj中定义
我已经尝试重新启动我的项目,以确保我创建了一个控制台应用程序,而不是偶然的事情,但这不起作用.任何方向将不胜感激.
这是我的代码:
imaginary.h
#ifndef imaginary_h_
#define imaginary_h_
#include <iostream>
class Complex
{
friend std::ostream & operator << (std::ostream& …Run Code Online (Sandbox Code Playgroud) 我的程序设置为让用户猜测1到10之间的整数.如果用户猜测太低或高,他们会收到通知并可以再试一次.
我遇到的问题是,当用户猜错时,会生成一个新的随机数.因此,基本上用户在错误之后永远不会尝试猜测相同的数字.
我需要这样做,以便当用户猜错时,他们仍在尝试猜测相同的值.
这是我的代码:
namespace IntegerGame
{
public partial class guessGame : Form
{
int num1;
int num2;
public guessGame()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void guessButton_Click(object sender, EventArgs e)
{
Random rnd1 = new Random();
num1 = rnd1.Next(1, 10);
if (int.TryParse(textBox1.Text, out num2))
{
if (num2 < 0 || num2 > 10)
{
textBox1.Clear();
MessageBox.Show("Please enter a number between 1 and 10");
}
else
{
if (num2 > num1)
{
textBox1.Clear();
MessageBox.Show("You …Run Code Online (Sandbox Code Playgroud)