10

我正在尝试通过锁定屏幕显示 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);
}

无论如何我可以通过密码/模式/密码等显示此 Google 位置服务对话框。锁定屏幕?

非常感谢您的帮助。

在此处输入图像描述

4

1 回答 1

3

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

这意味着既不能获得对这个 Activity 的引用,也不能调用它的方法,也不能用AndroidManifest.xml.

为了确定这确实是不可能的,我ActivityLifecycleListenerApplication.onCreate()我的一个使用谷歌位置服务的应用程序中添加了一个并请求类似的权限,以便获得对这个活动的引用。

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

于 2018-05-22T20:53:41.343 回答