Create the default static cards for Contextual Settings Homepage
Adding three default ContextualCard data to CardContentProvider, in case of empty database or no SettingsIntelligence, to keep Contextual Settings Homepage working well. Bug: 113372471 Test: visual, atest SettingsHomepageActivityTest Change-Id: Id7b26818e10f7945b2618100901310a005d8cc0d
This commit is contained in:
@@ -17,16 +17,21 @@
|
||||
package com.android.settings.homepage;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.database.Cursor;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.settings.homepage.deviceinfo.DataUsageSlice;
|
||||
import com.android.settingslib.utils.AsyncLoaderCompat;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class CardContentLoader extends AsyncLoaderCompat<List<ContextualCard>> {
|
||||
private static final String TAG = "CardContentLoader";
|
||||
static final int CARD_CONTENT_LOADER_ID = 1;
|
||||
|
||||
private Context mContext;
|
||||
@@ -49,9 +54,9 @@ public class CardContentLoader extends AsyncLoaderCompat<List<ContextualCard>> {
|
||||
@Override
|
||||
public List<ContextualCard> loadInBackground() {
|
||||
final List<ContextualCard> result = new ArrayList<>();
|
||||
try (Cursor cursor = CardDatabaseHelper.getInstance(mContext).getContextualCards()) {
|
||||
try (Cursor cursor = getContextualCardsFromProvider()) {
|
||||
if (cursor.getCount() == 0) {
|
||||
//TODO(b/113372471): Load Default static cards and return 3 static cards
|
||||
result.addAll(createStaticCards());
|
||||
return result;
|
||||
}
|
||||
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
|
||||
@@ -65,4 +70,58 @@ public class CardContentLoader extends AsyncLoaderCompat<List<ContextualCard>> {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
Cursor getContextualCardsFromProvider() {
|
||||
return CardDatabaseHelper.getInstance(mContext).getContextualCards();
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
List<ContextualCard> createStaticCards() {
|
||||
final long appVersionCode = getAppVersionCode();
|
||||
final String packageName = mContext.getPackageName();
|
||||
final double rankingScore = 0.0;
|
||||
final List<ContextualCard> result = new ArrayList() {{
|
||||
add(new ContextualCard.Builder()
|
||||
.setSliceUri(DataUsageSlice.DATA_USAGE_CARD_URI.toString())
|
||||
.setName(packageName + "/" + DataUsageSlice.PATH_DATA_USAGE_CARD)
|
||||
.setPackageName(packageName)
|
||||
.setRankingScore(rankingScore)
|
||||
.setAppVersion(appVersionCode)
|
||||
.setCardType(ContextualCard.CardType.SLICE)
|
||||
.setIsHalfWidth(true)
|
||||
.build());
|
||||
//TODO(b/115971399): Will change following values of SliceUri and Name
|
||||
// after landing these slice cards.
|
||||
add(new ContextualCard.Builder()
|
||||
.setSliceUri("content://com.android.settings.slices/intent/battery_card")
|
||||
.setName(packageName + "/" + "battery_card")
|
||||
.setPackageName(packageName)
|
||||
.setRankingScore(rankingScore)
|
||||
.setAppVersion(appVersionCode)
|
||||
.setCardType(ContextualCard.CardType.SLICE)
|
||||
.setIsHalfWidth(true)
|
||||
.build());
|
||||
add(new ContextualCard.Builder()
|
||||
.setSliceUri("content://com.android.settings.slices/intent/device_info_card")
|
||||
.setName(packageName + "/" + "device_info_card")
|
||||
.setPackageName(packageName)
|
||||
.setRankingScore(rankingScore)
|
||||
.setAppVersion(appVersionCode)
|
||||
.setCardType(ContextualCard.CardType.SLICE)
|
||||
.setIsHalfWidth(true)
|
||||
.build());
|
||||
}};
|
||||
return result;
|
||||
}
|
||||
|
||||
private long getAppVersionCode() {
|
||||
try {
|
||||
return mContext.getPackageManager().getPackageInfo(mContext.getPackageName(),
|
||||
0 /* flags */).getLongVersionCode();
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
Log.e(TAG, "Invalid package name for context", e);
|
||||
}
|
||||
return -1L;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user