是否可以在Android 4.0及更高版本的设备上使用Android 2.1并使用Calendar Provider?

时间:2011-12-28 23:10:36

标签: android

是否可以定位Android 2.1并在使用Android 4.0及更高版本的设备上使用CalendarProvider,还是只能通过创建 2 单独的APK来实现?

1 个答案:

答案 0 :(得分:1)

这取决于你对“目标”的意思。

如果你的意思是“设置targetSdkVersion”到Android 2.1,你仍然可以使用你想要的任何API,只要你在拥有它们的设备上运行时只尝试调用它们。

如果你的意思是“设置构建目标”到Android 2.1,你仍然可以使用你想要的任何API,只要你使用反射来访问比API级别7更新的API。因为CalendarContract是内容提供商,主要是访问各种静态数据成员,例如CONTENT_URI。以下是使用反射获取CONTENT_URI值的示例:

  private static Uri CONTENT_URI=null;

  static {
    int sdk=new Integer(Build.VERSION.SDK).intValue();

    if (sdk>=5) {
      try {
        Class<?> clazz=Class.forName("android.provider.ContactsContract$Contacts");

        CONTENT_URI=(Uri)clazz.getField("CONTENT_URI").get(clazz);
      }
      catch (Throwable t) {
        Log.e("PickDemo", "Exception when determining CONTENT_URI", t);
      }
    }
    else {
      CONTENT_URI=Contacts.People.CONTENT_URI;
    }
  }

(注意:此示例旨在在Android 1.5及更高版本上运行 - 取决于您的minSdkVersion,您可以使用Build.VERSION.SDK_INT代替new Integer(Build.VERSION.SDK).intValue()。)

如果用“目标”表示其他内容,那么我们需要澄清您对动词“目标”的使用。