Removing logic around replacing icon during restore
This logic was dependent on key-value based backup. Since we are using full-backup, the appropriate flags are never set. Bug: 18764649 Change-Id: I95a93eee63ac9c82acfb66abfdd1a5407974df46
This commit is contained in:
parent
a167a6e04b
commit
a32bf9b181
|
@ -1,23 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2015 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<resolve xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3" >
|
||||
|
||||
<favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" />
|
||||
<favorite launcher:uri="http://www.example.com/" />
|
||||
|
||||
</resolve>
|
|
@ -1,23 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2015 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<resolve xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3" >
|
||||
|
||||
<favorite launcher:uri="#Intent;action=android.media.action.STILL_IMAGE_CAMERA;end" />
|
||||
<favorite launcher:uri="#Intent;action=android.intent.action.CAMERA_BUTTON;end" />
|
||||
|
||||
</resolve>
|
|
@ -1,23 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2015 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<resolve xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3" >
|
||||
|
||||
<favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_EMAIL;end" />
|
||||
<favorite launcher:uri="mailto:" />
|
||||
|
||||
</resolve>
|
|
@ -1,23 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2015 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<resolve xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3" >
|
||||
|
||||
<favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_GALLERY;end" />
|
||||
<favorite launcher:uri="#Intent;type=images/*;end" />
|
||||
|
||||
</resolve>
|
|
@ -1,26 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2015 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<resolve xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3" >
|
||||
|
||||
<favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" />
|
||||
<favorite launcher:uri="sms:" />
|
||||
<favorite launcher:uri="smsto:" />
|
||||
<favorite launcher:uri="mms:" />
|
||||
<favorite launcher:uri="mmsto:" />
|
||||
|
||||
</resolve>
|
|
@ -1,24 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2015 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<resolve xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3" >
|
||||
|
||||
<favorite launcher:uri="#Intent;action=android.intent.action.DIAL;end" />
|
||||
<favorite launcher:uri="tel:123" />
|
||||
<favorite launcher:uri="#Intent;action=android.intent.action.CALL_BUTTON;end" />
|
||||
|
||||
</resolve>
|
|
@ -1,157 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.launcher3;
|
||||
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.XmlResourceParser;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.launcher3.AutoInstallsLayout.LayoutParserCallback;
|
||||
import com.android.launcher3.LauncherSettings.Favorites;
|
||||
import com.android.launcher3.util.Thunk;
|
||||
|
||||
import org.xmlpull.v1.XmlPullParserException;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* A class that parses content values corresponding to some common app types.
|
||||
*/
|
||||
public class CommonAppTypeParser implements LayoutParserCallback {
|
||||
private static final String TAG = "CommonAppTypeParser";
|
||||
|
||||
// Including TARGET_NONE
|
||||
public static final int SUPPORTED_TYPE_COUNT = 7;
|
||||
|
||||
private static final int RESTORE_FLAG_BIT_SHIFT = 4;
|
||||
|
||||
public static final int TARGET_PHONE = 1;
|
||||
public static final int TARGET_MESSENGER = 2;
|
||||
public static final int TARGET_EMAIL = 3;
|
||||
public static final int TARGET_BROWSER = 4;
|
||||
public static final int TARGET_GALLERY = 5;
|
||||
public static final int TARGET_CAMERA = 6;
|
||||
|
||||
private final long mItemId;
|
||||
@Thunk final int mResId;
|
||||
@Thunk final Context mContext;
|
||||
|
||||
ContentValues parsedValues;
|
||||
Intent parsedIntent;
|
||||
String parsedTitle;
|
||||
|
||||
public CommonAppTypeParser(long itemId, int itemType, Context context) {
|
||||
mItemId = itemId;
|
||||
mContext = context;
|
||||
mResId = getResourceForItemType(itemType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long generateNewItemId() {
|
||||
return mItemId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long insertAndCheck(SQLiteDatabase db, ContentValues values) {
|
||||
parsedValues = values;
|
||||
|
||||
// Remove unwanted values
|
||||
values.put(Favorites.ICON_PACKAGE, (String) null);
|
||||
values.put(Favorites.ICON_RESOURCE, (String) null);
|
||||
values.put(Favorites.ICON, (byte[]) null);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tries to find a suitable app to the provided app type.
|
||||
*/
|
||||
public boolean findDefaultApp() {
|
||||
if (mResId == 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
parsedIntent = null;
|
||||
parsedValues = null;
|
||||
new MyLayoutParser().parseValues();
|
||||
return (parsedValues != null) && (parsedIntent != null);
|
||||
}
|
||||
|
||||
private class MyLayoutParser extends DefaultLayoutParser {
|
||||
|
||||
public MyLayoutParser() {
|
||||
super(CommonAppTypeParser.this.mContext, null, CommonAppTypeParser.this,
|
||||
CommonAppTypeParser.this.mContext.getResources(), mResId, TAG_RESOLVE);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected long addShortcut(String title, Intent intent, int type) {
|
||||
if (type == Favorites.ITEM_TYPE_APPLICATION) {
|
||||
parsedIntent = intent;
|
||||
parsedTitle = title;
|
||||
}
|
||||
return super.addShortcut(title, intent, type);
|
||||
}
|
||||
|
||||
public void parseValues() {
|
||||
XmlResourceParser parser = mSourceRes.getXml(mLayoutId);
|
||||
try {
|
||||
beginDocument(parser, mRootTag);
|
||||
new ResolveParser().parseAndAdd(parser);
|
||||
} catch (IOException | XmlPullParserException e) {
|
||||
Log.e(TAG, "Unable to parse default app info", e);
|
||||
}
|
||||
parser.close();
|
||||
}
|
||||
}
|
||||
|
||||
public static int getResourceForItemType(int type) {
|
||||
switch (type) {
|
||||
case TARGET_PHONE:
|
||||
return R.xml.app_target_phone;
|
||||
|
||||
case TARGET_MESSENGER:
|
||||
return R.xml.app_target_messenger;
|
||||
|
||||
case TARGET_EMAIL:
|
||||
return R.xml.app_target_email;
|
||||
|
||||
case TARGET_BROWSER:
|
||||
return R.xml.app_target_browser;
|
||||
|
||||
case TARGET_GALLERY:
|
||||
return R.xml.app_target_gallery;
|
||||
|
||||
case TARGET_CAMERA:
|
||||
return R.xml.app_target_camera;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public static int encodeItemTypeToFlag(int itemType) {
|
||||
return itemType << RESTORE_FLAG_BIT_SHIFT;
|
||||
}
|
||||
|
||||
public static int decodeItemTypeFromFlag(int flag) {
|
||||
return (flag & ShortcutInfo.FLAG_RESTORED_APP_TYPE) >> RESTORE_FLAG_BIT_SHIFT;
|
||||
}
|
||||
|
||||
}
|
|
@ -54,11 +54,6 @@ public class DefaultLayoutParser extends AutoInstallsLayout {
|
|||
super(context, appWidgetHost, callback, sourceRes, layoutId, TAG_FAVORITES);
|
||||
}
|
||||
|
||||
public DefaultLayoutParser(Context context, AppWidgetHost appWidgetHost,
|
||||
LayoutParserCallback callback, Resources sourceRes, int layoutId, String rootTag) {
|
||||
super(context, appWidgetHost, callback, sourceRes, layoutId, rootTag);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HashMap<String, TagParser> getFolderElementsMap() {
|
||||
return getFolderElementsMap(mSourceRes);
|
||||
|
|
|
@ -1338,7 +1338,6 @@ public class LauncherModel extends BroadcastReceiver
|
|||
user = allUsers.get(serialNumber);
|
||||
int promiseType = c.getInt(restoredIndex);
|
||||
int disabledState = 0;
|
||||
boolean itemReplaced = false;
|
||||
targetPackage = null;
|
||||
if (user == null) {
|
||||
// User has been deleted remove the item.
|
||||
|
@ -1406,25 +1405,6 @@ public class LauncherModel extends BroadcastReceiver
|
|||
values.put(LauncherSettings.Favorites.RESTORED,
|
||||
promiseType);
|
||||
updateItem(id, values);
|
||||
} else if ((promiseType & ShortcutInfo.FLAG_RESTORED_APP_TYPE) != 0) {
|
||||
// This is a common app. Try to replace this.
|
||||
int appType = CommonAppTypeParser.decodeItemTypeFromFlag(promiseType);
|
||||
CommonAppTypeParser parser = new CommonAppTypeParser(id, appType, context);
|
||||
if (parser.findDefaultApp()) {
|
||||
// Default app found. Replace it.
|
||||
intent = parser.parsedIntent;
|
||||
cn = intent.getComponent();
|
||||
ContentValues values = parser.parsedValues;
|
||||
values.put(LauncherSettings.Favorites.RESTORED, 0);
|
||||
updateItem(id, values);
|
||||
restored = false;
|
||||
itemReplaced = true;
|
||||
|
||||
} else {
|
||||
FileLog.d(TAG, "Unrestored package removed: " + cn);
|
||||
itemsToRemove.add(id);
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
FileLog.d(TAG, "Unrestored package removed: " + cn);
|
||||
itemsToRemove.add(id);
|
||||
|
@ -1464,16 +1444,7 @@ public class LauncherModel extends BroadcastReceiver
|
|||
boolean useLowResIcon = container >= 0 &&
|
||||
c.getInt(rankIndex) >= FolderIcon.NUM_ITEMS_IN_PREVIEW;
|
||||
|
||||
if (itemReplaced) {
|
||||
if (user.equals(Process.myUserHandle())) {
|
||||
info = getAppShortcutInfo(intent, user, null,
|
||||
cursorIconInfo, false, useLowResIcon);
|
||||
} else {
|
||||
// Don't replace items for other profiles.
|
||||
itemsToRemove.add(id);
|
||||
continue;
|
||||
}
|
||||
} else if (restored) {
|
||||
if (restored) {
|
||||
if (user.equals(Process.myUserHandle())) {
|
||||
info = getRestoredItemInfo(c, intent,
|
||||
promiseType, itemType, cursorIconInfo);
|
||||
|
|
|
@ -68,6 +68,7 @@ public class ShortcutInfo extends ItemInfoWithIcon {
|
|||
* Indicates if it represents a common type mentioned in {@link CommonAppTypeParser}.
|
||||
* Upto 15 different types supported.
|
||||
*/
|
||||
@Deprecated
|
||||
public static final int FLAG_RESTORED_APP_TYPE = 0B0011110000;
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue