gpt4 book ai didi

android - 如何在锁屏上方/通过锁屏显示 Google 位置服务权限请求对话框?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:41:38 29 4
gpt4 key购买 nike

我正在尝试通过锁定屏幕显示 Google 位置服务(打开 GPS、网络数据等)对话框。

我正在使用 KeyguardManager 禁用锁定屏幕。这工作正常,因为我的 MainActivity 能够禁用锁定屏幕。但是,只要 Google 位置服务对话框出现,锁定屏幕就会恢复启用,屏幕被锁定,除非我解锁屏幕,否则我无法进入我的 MainActivity。

我什至尝试过 ...Flag_Show_When_Locked,但没有用。

这是我的代码:

private KeyguardLock DisableScreenLock; 

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

setContentView(R.main_layout);


KeyguardManager myKeyGuard = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
DisableScreenLock = myKeyGuard.newKeyguardLock("disableKeyguard");
DisableScreenLock.disableKeyguard();
}


protected synchronized void GoogleApiClient_Intialize() {
Log.e(TAG, "Building GoogleApiClient");
googleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
protected void LocationRequest_Intialize() {
locationRequest = new LocationRequest();
locationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
locationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}

protected void LocationSettingsRequest_Builder() {
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(locationRequest);
locationSettingsRequest = builder.build();
}
@Override
public void onConnected(Bundle connectionHint) {
Log.e(TAG, "GoogleApiClient is connected");
LocationSettings_Check_Start();
}
protected void LocationSettings_Check_Start() {
PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings(
googleApiClient, locationSettingsRequest);
result.setResultCallback(this);
}

我是否可以通过密码/模式/pin 等方式显示此 Google 位置服务对话框。锁定屏幕?

非常感谢您的帮助。

enter image description here

最佳答案

不幸的是,这是不可能的,因为您要显示的对话框包含在不属于您的应用的 Activity 中。

这意味着既不能获取对此 Activity 的引用,也不能对其调用方法,也不能使用 AndroidManifest.xml 覆盖它的任何属性。

为了确定这确实不可能,我在我的一个使用 Google 位置服务的应用程序的 Application.onCreate() 中添加了一个 ActivityLifecycleListener 并询问获得类似权限,以便获得对此 Activity 的引用。

ActivityLifecycleListener.onResume() 中,我添加了一些日志记录代码,并注意到即使在屏幕上显示 Google Play 服务对话框时也没有记录任何内容,但是日志按预期工作 list 文件中的 Activity 。此外,要在 Android Studio 中查看带有 Logcat 的应用,我必须将 Logcat 过滤器设置为“无过滤器”,这意味着我的应用无法以任何方式引用此 Activity。

关于android - 如何在锁屏上方/通过锁屏显示 Google 位置服务权限请求对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33847980/

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