version:
fix: update:更换为酷信
This commit is contained in:
59
iconloaderlib/src/com/uiuipad/os/util/ComponentKey.java
Normal file
59
iconloaderlib/src/com/uiuipad/os/util/ComponentKey.java
Normal file
@@ -0,0 +1,59 @@
|
||||
package com.uiuipad.os.util;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.os.UserHandle;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class ComponentKey {
|
||||
|
||||
public final ComponentName componentName;
|
||||
public final UserHandle user;
|
||||
|
||||
private final int mHashCode;
|
||||
|
||||
public ComponentKey(ComponentName componentName, UserHandle user) {
|
||||
if (componentName == null || user == null) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
this.componentName = componentName;
|
||||
this.user = user;
|
||||
mHashCode = Arrays.hashCode(new Object[] {componentName, user});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return mHashCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
ComponentKey other = (ComponentKey) o;
|
||||
return other.componentName.equals(componentName) && other.user.equals(user);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encodes a component key as a string of the form [flattenedComponentString#userId].
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return componentName.flattenToString() + "#" + user;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright (C) 2018 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.uiuipad.os.util;
|
||||
|
||||
import static android.database.sqlite.SQLiteDatabase.NO_LOCALIZED_COLLATORS;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.ContextWrapper;
|
||||
import android.database.DatabaseErrorHandler;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteDatabase.CursorFactory;
|
||||
import android.database.sqlite.SQLiteDatabase.OpenParams;
|
||||
import android.database.sqlite.SQLiteOpenHelper;
|
||||
import android.os.Build;
|
||||
|
||||
/**
|
||||
* Extension of {@link SQLiteOpenHelper} which avoids creating default locale table by
|
||||
* A context wrapper which creates databases without support for localized collators.
|
||||
*/
|
||||
public abstract class NoLocaleSQLiteHelper extends SQLiteOpenHelper {
|
||||
|
||||
private static final boolean ATLEAST_P =
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.P;
|
||||
|
||||
public NoLocaleSQLiteHelper(Context context, String name, int version) {
|
||||
super(ATLEAST_P ? context : new NoLocalContext(context), name, null, version);
|
||||
if (ATLEAST_P) {
|
||||
setOpenParams(new OpenParams.Builder().addOpenFlags(NO_LOCALIZED_COLLATORS).build());
|
||||
}
|
||||
}
|
||||
|
||||
private static class NoLocalContext extends ContextWrapper {
|
||||
public NoLocalContext(Context base) {
|
||||
super(base);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLiteDatabase openOrCreateDatabase(
|
||||
String name, int mode, CursorFactory factory, DatabaseErrorHandler errorHandler) {
|
||||
return super.openOrCreateDatabase(
|
||||
name, mode | Context.MODE_NO_LOCALIZED_COLLATORS, factory, errorHandler);
|
||||
}
|
||||
}
|
||||
}
|
||||
125
iconloaderlib/src/com/uiuipad/os/util/SQLiteCacheHelper.java
Normal file
125
iconloaderlib/src/com/uiuipad/os/util/SQLiteCacheHelper.java
Normal file
@@ -0,0 +1,125 @@
|
||||
package com.uiuipad.os.util;
|
||||
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteException;
|
||||
import android.database.sqlite.SQLiteFullException;
|
||||
import android.database.sqlite.SQLiteOpenHelper;
|
||||
import android.util.Log;
|
||||
|
||||
/**
|
||||
* An extension of {@link SQLiteOpenHelper} with utility methods for a single table cache DB.
|
||||
* Any exception during write operations are ignored, and any version change causes a DB reset.
|
||||
*/
|
||||
public abstract class SQLiteCacheHelper {
|
||||
private static final String TAG = "SQLiteCacheHelper";
|
||||
|
||||
private static final boolean IN_MEMORY_CACHE = false;
|
||||
|
||||
private final String mTableName;
|
||||
private final MySQLiteOpenHelper mOpenHelper;
|
||||
|
||||
private boolean mIgnoreWrites;
|
||||
|
||||
public SQLiteCacheHelper(Context context, String name, int version, String tableName) {
|
||||
if (IN_MEMORY_CACHE) {
|
||||
name = null;
|
||||
}
|
||||
mTableName = tableName;
|
||||
mOpenHelper = new MySQLiteOpenHelper(context, name, version);
|
||||
|
||||
mIgnoreWrites = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see SQLiteDatabase#delete(String, String, String[])
|
||||
*/
|
||||
public void delete(String whereClause, String[] whereArgs) {
|
||||
if (mIgnoreWrites) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
mOpenHelper.getWritableDatabase().delete(mTableName, whereClause, whereArgs);
|
||||
} catch (SQLiteFullException e) {
|
||||
onDiskFull(e);
|
||||
} catch (SQLiteException e) {
|
||||
Log.d(TAG, "Ignoring sqlite exception", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see SQLiteDatabase#insertWithOnConflict(String, String, ContentValues, int)
|
||||
*/
|
||||
public void insertOrReplace(ContentValues values) {
|
||||
if (mIgnoreWrites) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
mOpenHelper.getWritableDatabase().insertWithOnConflict(
|
||||
mTableName, null, values, SQLiteDatabase.CONFLICT_REPLACE);
|
||||
} catch (SQLiteFullException e) {
|
||||
onDiskFull(e);
|
||||
} catch (SQLiteException e) {
|
||||
Log.d(TAG, "Ignoring sqlite exception", e);
|
||||
}
|
||||
}
|
||||
|
||||
private void onDiskFull(SQLiteFullException e) {
|
||||
Log.e(TAG, "Disk full, all write operations will be ignored", e);
|
||||
mIgnoreWrites = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see SQLiteDatabase#query(String, String[], String, String[], String, String, String)
|
||||
*/
|
||||
public Cursor query(String[] columns, String selection, String[] selectionArgs) {
|
||||
return mOpenHelper.getReadableDatabase().query(
|
||||
mTableName, columns, selection, selectionArgs, null, null, null);
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
mOpenHelper.clearDB(mOpenHelper.getWritableDatabase());
|
||||
}
|
||||
|
||||
public void close() {
|
||||
mOpenHelper.close();
|
||||
}
|
||||
|
||||
protected abstract void onCreateTable(SQLiteDatabase db);
|
||||
|
||||
/**
|
||||
* A private inner class to prevent direct DB access.
|
||||
*/
|
||||
private class MySQLiteOpenHelper extends NoLocaleSQLiteHelper {
|
||||
|
||||
public MySQLiteOpenHelper(Context context, String name, int version) {
|
||||
super(context, name, version);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(SQLiteDatabase db) {
|
||||
onCreateTable(db);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||
if (oldVersion != newVersion) {
|
||||
clearDB(db);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||
if (oldVersion != newVersion) {
|
||||
clearDB(db);
|
||||
}
|
||||
}
|
||||
|
||||
private void clearDB(SQLiteDatabase db) {
|
||||
db.execSQL("DROP TABLE IF EXISTS " + mTableName);
|
||||
onCreate(db);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user