2017-12-26 30 views
1

私は現在メンテナンスしているライブラリを更新していますが、メソッドシグネチャでMediaDataSourceを使用するメソッドを提供したいと思いますが、これはAPI 23+でのみ利用できます。私はまた、資源がたとえばlayout-v13ために、フォルダの命名に裏打ちされた、カスタマイズすることができます知っているAndroidの下位互換性とメソッド

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
    // some API specific code 

:私はあなたのようなチェックを経て下位互換性を確保すべきであるAndroidのドキュメントの状態を知っています。

@Version Build.VERSION_CODES.HONEYCOMB // not real code, just what I'm thinking 
public void setData(MediaDataSource mediaDataSource) { 
    // some code 
} 

答えて

2

はい、通常、あなたがに実行すると:私の質問のような構造物を提供することが可能である。この種のか、私のコードはまだ< API 23.んAndroid上で動作するような似たようなのチェックを追加することであり、 APIの互換性の問題警告でalt+enterを押すと、Android Studioはさまざまなソリューションを提供します。

Oreoユーザー(API 26)のみが利用できるAndroidのNotificationChannelの例を考えてみましょう。それらをターゲットにするには、次のものが必要です。

オプション1:else文 あなたはすでにあなたの質問でこれを言及している場合

オプション2:@TargetAPI注釈

@TargetApi(Build.VERSION_CODES.O) 
private void createNotification() { 
NotificationChannel notificationChannel = new NotificationChannel("123", "newNotification", NotificationManager.IMPORTANCE_DEFAULT);} 

オプション3:@RequiresAPI注釈

@RequiresApi(api = Build.VERSION_CODES.O) 
private void createNotification() { 
NotificationChannel notificationChannel = new NotificationChannel("123", "newNotification", NotificationManager.IMPORTANCE_DEFAULT); 
}