Androidの高いバージョンのAPI方法は、低バージョンのシステム上で互換性のある処理を行うにはどうすればいいですか?
前言
最近の開発ではSIMカードのネットワーク状態を取得する必要があります。
Androidのバージョンが入れ替わり、新しいバージョンが新しい特性、新しい方法をもたらします。
新しい方法は多くの便利をもたらしましたが、低バージョンのシステムでは実行できません。互換性が不適切であれば、APPは低バージョンのシステム上で、運行時にはcrashになります。
処理方法
1.
2.
3.
4.運転追加時のSDKバージョン判定
締め括りをつける
第一、第二、第三の方法は、単にコンパイルされたものであり、API 24以下のシステムが実行されると、
正しいやり方は、運転時のSDKバージョン判定を追加し、下位バージョンと判断した場合に他の方法を追加してこの機能を実現することです。
はい、以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考学習価値を持っています。質問があれば、メッセージを残して交流してください。ありがとうございます。
最近の開発ではSIMカードのネットワーク状態を取得する必要があります。
TelephonyManager tm =(TelephonyManager)context.getSystemService(TELEPHONY_SERVICE);
state =tm.getDataNetworkType();
しかし、エラーがありました。Call requires API level 24 (current min is 21): android.telephony.TelephonyManager#getDataNetworkType
です。Androidのバージョンが入れ替わり、新しいバージョンが新しい特性、新しい方法をもたらします。
新しい方法は多くの便利をもたらしましたが、低バージョンのシステムでは実行できません。互換性が不適切であれば、APPは低バージョンのシステム上で、運行時にはcrashになります。
処理方法
1.
@RequiresApi(api = Build.VERSION_CODES.N)
を追加する2.
@TargetApi(Build.VERSION_CODES.N)
を追加する3.
@SuppressLint("NewApi")
を追加する4.運転追加時のSDKバージョン判定
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
tm.getDataNetworkType();
}
5.低バージョンでは他の方法でこの機能を実現する。締め括りをつける
第一、第二、第三の方法は、単にコンパイルされたものであり、API 24以下のシステムが実行されると、
java.lang.NoSuchMethodError
を誘発する。正しいやり方は、運転時のSDKバージョン判定を追加し、下位バージョンと判断した場合に他の方法を追加してこの機能を実現することです。
はい、以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考学習価値を持っています。質問があれば、メッセージを残して交流してください。ありがとうございます。