Create an interface to access the two pane state
Create an new interface in the embedding provider, this interface tells if settings app is in two pane or not. To access the activity in the content provider, we need to store the activity reference in the app application layer. Test: See if two pane state is correct. Bug: 203763572 Change-Id: Iae2245b84af2683d932f1900df9959dad98370d7
This commit is contained in:
@@ -16,13 +16,18 @@
|
||||
|
||||
package com.android.settings;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Application;
|
||||
|
||||
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
/** Settings application which sets up activity embedding rules for the large screen device. */
|
||||
public class SettingsApplication extends Application {
|
||||
|
||||
private WeakReference<Activity> mHomeActivity = new WeakReference<>(null);
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
@@ -31,4 +36,12 @@ public class SettingsApplication extends Application {
|
||||
new ActivityEmbeddingRulesController(this);
|
||||
controller.initRules();
|
||||
}
|
||||
|
||||
public void setHomeActivity(Activity homeActivity) {
|
||||
mHomeActivity = new WeakReference<>(homeActivity);
|
||||
}
|
||||
|
||||
public Activity getHomeActivity() {
|
||||
return mHomeActivity.get();
|
||||
}
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.activityembedding;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ContentProvider;
|
||||
import android.content.ContentValues;
|
||||
import android.database.Cursor;
|
||||
@@ -23,13 +24,17 @@ import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.android.settings.SettingsApplication;
|
||||
|
||||
/**
|
||||
* A content provider for querying the state of activity embedding feature
|
||||
*/
|
||||
public class ActivityEmbeddingProvider extends ContentProvider {
|
||||
|
||||
private static final String METHOD_IS_EMBEDDING_ACTIVITY_ENABLED = "isEmbeddingActivityEnabled";
|
||||
private static final String METHOD_IS_IN_SETTINGS_TWO_PANE = "isInSettingsTwoPane";
|
||||
private static final String EXTRA_ENABLED_STATE = "enabled_state";
|
||||
private static final String EXTRA_TWO_PANE_STATE = "two_pane_state";
|
||||
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
@@ -43,6 +48,14 @@ public class ActivityEmbeddingProvider extends ContentProvider {
|
||||
bundle.putBoolean(EXTRA_ENABLED_STATE,
|
||||
ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext()));
|
||||
return bundle;
|
||||
} else if (TextUtils.equals(method, METHOD_IS_IN_SETTINGS_TWO_PANE)) {
|
||||
final Activity homeActivity =
|
||||
((SettingsApplication) getContext().getApplicationContext()).getHomeActivity();
|
||||
final Bundle bundle = new Bundle();
|
||||
bundle.putBoolean(EXTRA_TWO_PANE_STATE,
|
||||
homeActivity == null ? false
|
||||
: ActivityEmbeddingUtils.isTwoPaneResolution(homeActivity));
|
||||
return bundle;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@@ -42,6 +42,7 @@ import androidx.fragment.app.FragmentTransaction;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Settings;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.SettingsApplication;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.accounts.AvatarViewMixin;
|
||||
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
|
||||
@@ -95,6 +96,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
((SettingsApplication) getApplication()).setHomeActivity(this);
|
||||
setContentView(R.layout.settings_homepage_container);
|
||||
|
||||
final View appBar = findViewById(R.id.app_bar_container);
|
||||
|
Reference in New Issue
Block a user