
They were all due to the addition of "application label" to the installed app cache. This commit adds a mock ApplicationInfo to the mock package manager and also specifies the label while inserting into the test content provider.
59 lines
1.6 KiB
Java
59 lines
1.6 KiB
Java
package mock;
|
|
|
|
import android.content.pm.ApplicationInfo;
|
|
import android.content.pm.PackageInfo;
|
|
import android.test.mock.MockPackageManager;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
|
|
public class MockInstallablePackageManager extends MockPackageManager {
|
|
|
|
private List<PackageInfo> info = new ArrayList<>();
|
|
|
|
@Override
|
|
public List<PackageInfo> getInstalledPackages(int flags) {
|
|
return info;
|
|
}
|
|
|
|
public void install(String id, int version, String versionName) {
|
|
PackageInfo existing = getPackageInfo(id);
|
|
if (existing != null) {
|
|
existing.versionCode = version;
|
|
existing.versionName = versionName;
|
|
} else {
|
|
PackageInfo p = new PackageInfo();
|
|
p.packageName = id;
|
|
p.versionCode = version;
|
|
p.versionName = versionName;
|
|
info.add(p);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public ApplicationInfo getApplicationInfo(String packageName, int flags) throws NameNotFoundException {
|
|
return new MockApplicationInfo(getPackageInfo(packageName));
|
|
}
|
|
|
|
public PackageInfo getPackageInfo(String id) {
|
|
for (PackageInfo i : info) {
|
|
if (i.packageName.equals(id)) {
|
|
return i;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public void remove(String id) {
|
|
for (Iterator<PackageInfo> it = info.iterator(); it.hasNext();) {
|
|
PackageInfo info = it.next();
|
|
if (info.packageName.equals(id)) {
|
|
it.remove();
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|