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;
|
package com.android.settings;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
|
|
||||||
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
|
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
|
||||||
|
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
|
|
||||||
/** Settings application which sets up activity embedding rules for the large screen device. */
|
/** Settings application which sets up activity embedding rules for the large screen device. */
|
||||||
public class SettingsApplication extends Application {
|
public class SettingsApplication extends Application {
|
||||||
|
|
||||||
|
private WeakReference<Activity> mHomeActivity = new WeakReference<>(null);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
@@ -31,4 +36,12 @@ public class SettingsApplication extends Application {
|
|||||||
new ActivityEmbeddingRulesController(this);
|
new ActivityEmbeddingRulesController(this);
|
||||||
controller.initRules();
|
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;
|
package com.android.settings.activityembedding;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.content.ContentProvider;
|
import android.content.ContentProvider;
|
||||||
import android.content.ContentValues;
|
import android.content.ContentValues;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
@@ -23,13 +24,17 @@ import android.net.Uri;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
|
import com.android.settings.SettingsApplication;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A content provider for querying the state of activity embedding feature
|
* A content provider for querying the state of activity embedding feature
|
||||||
*/
|
*/
|
||||||
public class ActivityEmbeddingProvider extends ContentProvider {
|
public class ActivityEmbeddingProvider extends ContentProvider {
|
||||||
|
|
||||||
private static final String METHOD_IS_EMBEDDING_ACTIVITY_ENABLED = "isEmbeddingActivityEnabled";
|
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_ENABLED_STATE = "enabled_state";
|
||||||
|
private static final String EXTRA_TWO_PANE_STATE = "two_pane_state";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreate() {
|
public boolean onCreate() {
|
||||||
@@ -43,6 +48,14 @@ public class ActivityEmbeddingProvider extends ContentProvider {
|
|||||||
bundle.putBoolean(EXTRA_ENABLED_STATE,
|
bundle.putBoolean(EXTRA_ENABLED_STATE,
|
||||||
ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext()));
|
ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext()));
|
||||||
return bundle;
|
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;
|
return null;
|
||||||
}
|
}
|
||||||
|
@@ -42,6 +42,7 @@ import androidx.fragment.app.FragmentTransaction;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.Settings;
|
import com.android.settings.Settings;
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
|
import com.android.settings.SettingsApplication;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.accounts.AvatarViewMixin;
|
import com.android.settings.accounts.AvatarViewMixin;
|
||||||
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
|
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
|
||||||
@@ -95,6 +96,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements
|
|||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
((SettingsApplication) getApplication()).setHomeActivity(this);
|
||||||
setContentView(R.layout.settings_homepage_container);
|
setContentView(R.layout.settings_homepage_container);
|
||||||
|
|
||||||
final View appBar = findViewById(R.id.app_bar_container);
|
final View appBar = findViewById(R.id.app_bar_container);
|
||||||
|
Reference in New Issue
Block a user