[英]How to show the Google Location Services permission request dialog above / through the lockscreen?
我正試圖通過鎖定屏幕顯示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位置服務對話框。鎖定屏幕?
非常感謝您的幫助。
不幸的是,這是不可能的,因為您要顯示的對話框包含在不屬於您的應用的活動中。
這意味着既不能獲得對此Activity的引用,也不能在其上調用方法,也不能使用AndroidManifest.xml
覆蓋其任何屬性。
為了確保這確實不可能,我在我的一個Application.onCreate()
中添加了一個ActivityLifecycleListener
,該Application.onCreate()
程序使用Google Location Services並要求獲得類似的權限,以便獲得對此Activity的引用。
在ActivityLifecycleListener.onResume()
我添加了一些日志記錄代碼,並注意到即使在屏幕上顯示Google Play服務對話框時也沒有記錄任何內容,但是日志按照清單文件上的活動的預期工作。 另外,要在Android Studio中使用Logcat查看應用程序,我必須將Logcat過濾器設置為“無過濾器”,這意味着我的應用程序無法以任何方式引用此活動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.