我试图通过锁定屏幕显示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位置服务对话框。锁定屏幕?
非常感谢你的帮助。
答案 0 :(得分:2)
不幸的是,这是不可能的,因为您要显示的对话框包含在不属于您的应用的活动中。
这意味着既不能获得对此Activity的引用,也不能在其上调用方法,也不能使用AndroidManifest.xml
覆盖其任何属性。
为确保无法做到这一点,我在其中一个使用Google位置服务的应用的ActivityLifecycleListener
中添加了Application.onCreate()
,并要求获得类似的许可,以便获得参考此活动。
在ActivityLifecycleListener.onResume()
我添加了一些日志记录代码,并注意到即使在屏幕上显示Google Play服务对话框时也没有记录任何内容,但是日志按照清单文件上的活动的预期工作。另外,要在Android Studio中使用Logcat查看应用程序,我必须将Logcat过滤器设置为&#34;没有过滤器&#34;,这意味着我的应用程序无法以任何方式引用此活动。