एंड्रॉइड जावा प्रोग्राम के आयात अनुभाग को सशर्त रूप से कैसे संकलित किया जा सकता है? मुझे पता है कि हम @TargetApi() का उपयोग करके जावा कोड में सशर्त रूप से कक्षाओं को संकलित कर सकते हैं। हालांकि, @TargetApi() जावा फ़ाइल के शीर्ष पर आयात अनुभाग के लिए काम नहीं करता है।

विशेष रूप से, मैं इन आयात विवरण को अनदेखा करने में सक्षम होना चाहता हूं जब संकलन 27 के कंपाइलएसडीकेवर्सन और लक्ष्य एसडीकेवर्सन के साथ संकलित किया जाता है। हालांकि, मैं इन बयानों को कोड में रखना चाहता हूं और उन्हें संकलित करना चाहता हूं जब कंपाइलएसडीकेवर्सन और टारगेट एसडीकेवर्सन 30 या उससे ऊपर हैं। मेरी इच्छा है कि निम्नलिखित कोड काम करे, लेकिन नहीं। कोई सुझाव?:

@TargetApi(30) // <== This statement does not work in this section, alternatives?
import android.net.wifi.WifiNetworkSuggestion
import static android.provider.Settings.ACTION_WIFI_ADD_NETWORKS;
import static android.provider.Settings.EXTRA_WIFI_NETWORK_LIST;
0
user3179186 22 जिंदा 2021, 16:48
"मुझे पता है कि हम @TargetApi ()" का उपयोग करके जावा कोड में सशर्त रूप से कक्षाओं को संकलित कर सकते हैं - यह वह नहीं है जो @TargetApi करता है। इसके अलावा, 30 के compileSdkVersion का हर समय उपयोग करें। आप जो कर रहे हैं उसके आधार पर भिन्न targetSdkVersion समझ में आ सकता है, लेकिन एक compileSdkVersion से अधिक होने का कोई कारण नहीं है।
 – 
CommonsWare
22 जिंदा 2021, 16:55

1 उत्तर

सबसे बढ़िया उत्तर

जैसा कि कॉमन्सवेयर ने उल्लेख किया है, 30 के कंपाइलएसडीकेवर्सन का उपयोग करना, हर समय, मेरी परिस्थिति में सही है। साथ ही, @RequiresApi(api = Build.VERSION_CODES.R) के साथ आसपास के विशेष वर्ग और packageInfo.applicationInfo.targetSdkVersion के साथ लक्ष्य SDK संस्करण प्राप्त करना (देखें https://stackoverflow .com/a/30353224/3179186) ने मेरी आवश्यकताओं को पूरा किया।

0
user3179186 22 जिंदा 2021, 21:51