/BerichtsheftApp/src/android/content/ContentResolver.java

https://github.com/sefirot/androidStuff · Java · 115 lines · 89 code · 19 blank · 7 comment · 22 complexity · 57c0b9956b32b33e886293f447973fe8 MD5 · raw file

  1. package android.content;
  2. import static com.applang.Util1.*;
  3. import java.io.File;
  4. import java.util.Observable;
  5. import android.database.ContentObserver;
  6. import android.database.Cursor;
  7. import android.net.Uri;
  8. import android.util.Log;
  9. public class ContentResolver extends Observable
  10. {
  11. private static final String TAG = ContentResolver.class.getSimpleName();
  12. public static final String CURSOR_DIR_BASE_TYPE = "vnd.android.cursor.dir";
  13. public static final String CURSOR_ITEM_BASE_TYPE = "vnd.android.cursor.item";
  14. public static final String RAW = "raw";
  15. public static final String SCHEME_CONTENT = "content";
  16. public static final String SCHEME_FILE = "file";
  17. public ContentResolver(Context context) {
  18. mContext = context;
  19. }
  20. Context mContext;
  21. public ContentProvider acquireProvider(final Uri uri)
  22. {
  23. Context context = mContext;
  24. contentProvider = new ContentProvider();
  25. String flavor = null;
  26. try {
  27. if (SCHEME_CONTENT.equals(uri.getScheme())) {
  28. flavor = uri.getAuthority();
  29. if (flavor != null) {
  30. Class<?> c = Class.forName(flavor + "Provider");
  31. contentProvider = (ContentProvider) c.newInstance();
  32. }
  33. } else if (SCHEME_FILE.equals(uri.getScheme())) {
  34. final File file = new File(uri.getPath());
  35. context = new Context() {
  36. {
  37. setPackageInfo("", file.getParent());
  38. }
  39. @Override
  40. public ContentResolver getContentResolver() {
  41. return ContentResolver.this;
  42. }
  43. };
  44. }
  45. } catch (Exception e) {
  46. Log.e(TAG, "acquireProvider", e);
  47. }
  48. context.setFlavor(flavor);
  49. contentProvider.setContext(context);
  50. contentProvider.onCreate();
  51. com.applang.Util2.no_println("contentProvider", contentProvider.getClass());
  52. return contentProvider;
  53. }
  54. public ContentProvider contentProvider = null;
  55. public Cursor rawQuery(Uri uri, String...sql) {
  56. return acquireProvider(uri).rawQuery(uri, sql);
  57. }
  58. public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
  59. if (selection != null && projection == null && selectionArgs == null && sortOrder == null)
  60. return rawQuery(uri, selection);
  61. else if (hasAuthority(uri) || projection != null || selectionArgs != null || sortOrder != null)
  62. return acquireProvider(uri).query(uri, projection, selection, selectionArgs, sortOrder);
  63. else
  64. return rawQuery(uri, selection);
  65. }
  66. public int delete(Uri uri, String where, String[] whereArgs) {
  67. return acquireProvider(uri).delete(uri, where, whereArgs);
  68. }
  69. public Uri insert(Uri uri, ContentValues initialValues) {
  70. return acquireProvider(uri).insert(uri, initialValues);
  71. }
  72. public int update(Uri uri, ContentValues values, String where, String[] whereArgs) {
  73. return acquireProvider(uri).update(uri, values, where, whereArgs);
  74. }
  75. /**
  76. * Return the MIME type of the given content URL.
  77. *
  78. * @param url A Uri identifying content (either a list or specific type),
  79. * using the content:// scheme.
  80. * @return A MIME type for the content, or null if the URL is invalid or the type is unknown
  81. */
  82. public String getType(Uri uri) {
  83. return acquireProvider(uri).getType(uri);
  84. }
  85. public void notifyChange(Uri uri, ContentObserver observer) {
  86. setChanged();
  87. notifyObservers(uri);
  88. }
  89. public final void registerContentObserver(Uri uri, boolean notifyForDescendents, ContentObserver observer) {
  90. addObserver(observer);
  91. }
  92. public final void unregisterContentObserver(ContentObserver observer) {
  93. if (countObservers() > 0)
  94. deleteObserver(observer);
  95. }
  96. }