2011-12-28 59 views

回答

1

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

如果你的意思是“设置targetSdkVersion”到Android 2.1,你仍然可以使用任何你想要的API,只要你只尝试打电话给他们,当你有他们的设备上运行。

如果您的意思是将“构建目标”设置为Android 2.1,只要您使用反射来访问比API级别7更新的API,则仍然可以使用任何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()) 。

如果“目标”你的意思是别的东西,那么我们就需要澄清你使用动词“目标”的。

+0

下一个问题是,如果使用类的这种方式比有2个分支和2个APKS是好,我很快就会看到它:)谢谢! – 2011-12-29 00:29:47

相关问题