2011-12-28 52 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

相關問題