gpt4 book ai didi

android - 覆盖权限未触发 onRequestPermissionsResult

转载 作者:搜寻专家 更新时间:2023-11-01 07:47:10 25 4
gpt4 key购买 nike

我试图让 onRequestPermissionsResult() 触发,这样我就可以在收到覆盖权限后开始运行我的应用程序。不幸的是,由于未发送 toast ,我似乎无法调用 onRequestPermissionsResult() 。我觉得这与当您请求覆盖权限时没有接受或拒绝对话框这一事实有关。相反,您会看到一个切换按钮。

Permission

public class Main extends Activity {

private static final int REQUEST_OVERLAY_PERMISSION = 1;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_OVERLAY_PERMISSION);
}
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
{
Toast.makeText(this, "onRequestPermissionsResult has been called", Toast.LENGTH_SHORT).show();
//Toast.makeText(this, "RequestCode: " + requestCode + " permissions " + permissions + " grantresults: " + grantResults, Toast.LENGTH_SHORT).show();
}

private void runService()
{
Intent svc = new Intent(this, OverlayShowingService.class);
startService(svc);
finish();
}
}

最佳答案

这不是您使用 ACTION_MANAGE_OVERLAY_PERMISSION 的方式。

首先,startActivityForResult() 不会触发onRequestPermissionsResult()

其次,ACTION_MANAGE_OVERLAY_PERMISSION 不返回结果。

因此,只需在您的ACTION_MANAGE_OVERLAY_PERMISSION Intent 上调用startActivity()。用户将看到您的屏幕截图中显示的屏幕(或用户设备的等效屏幕)。用户可以选择是否切换该开关。稍后,当控制返回到您的应用程序时(例如,onStart()onResume()),您可以 call canDrawOverlays()查看用户是否授予权限。

关于android - 覆盖权限未触发 onRequestPermissionsResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41603332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com