簡體   English   中英

如何在鎖定屏幕上方/通過鎖屏顯示Google位置服務權限請求對話框?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM