2015-12-30 9 views
5

में एपीआई स्तर चेतावनी को दबाएं मैं KitKat से अधिक एपीआई स्तरों के लिए संगतता के साथ एक एसएमएस बनाने का इरादा बनाने की कोशिश कर रहा हूं। कोड काम करता है, लेकिन मुझे एक चेतावनी मिली कि एपीआई स्तर 1 9 की आवश्यकता है। मैंने इसे @TargetApi(Build.VERSION_CODES.KITKAT) के साथ हल करने का प्रयास किया लेकिन मुझे चेतावनी मिली "Annotations यहां अनुमति नहीं है"।कोड

क्या इस चेतावनी को अनदेखा करने का कोई आसान तरीका है?

private boolean apLowerThanKitKat = (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT); 

Intent smsIntent = new Intent(android.content.Intent.ACTION_SEND); 
if (apLowerThanKitKat) 
{ 
    smsIntent.setPackage("vnd.android-dir/mms-sms"); 
} 
else 
{ 
    //@TargetApi(Build.VERSION_CODES.KITKAT) 
    smsIntent.setPackage(Telephony.Sms.getDefaultSmsPackage(getActivity())); 
} 

अग्रिम धन्यवाद!

उत्तर

8

एपीआई जांच के लिए बूलियन का उपयोग न करें। इसे सीधे कथन में रखें:

if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) 
{ 
    smsIntent.setPackage("vnd.android-dir/mms-sms"); 
} 
else 
{ 
    smsIntent.setPackage(Telephony.Sms.getDefaultSmsPackage(getActivity())); 
} 

इससे चेतावनी दूर होनी चाहिए। TargetApi एनोटेशन विधि स्तर पर किया जाना चाहिए:

@TargetApi(Build.VERSION_CODES.KITKAT) 
public void yourKitkatMethod() {} 
+1

बूलियन का उपयोग करके स्मार्ट होने और पठनीयता में सुधार करने की कोशिश की: पी लेकिन यह पूरी तरह से काम करता है, धन्यवाद! – TheTool

+0

@TheTool वहां गया :) – jlhonora

+0

लक्ष्य एपीआई कक्षा स्तर पर भी इस्तेमाल किया जा सकता है – Flo354

3

एनोटेशन एक विधि

private boolean apLowerThanKitKat = (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT); 

Intent smsIntent = new Intent(android.content.Intent.ACTION_SEND); 
if (apLowerThanKitKat) 
{ 
    smsIntent.setPackage("vnd.android-dir/mms-sms"); 
} 
else 
{ 
    kitkatSetPackage(): 
} 

@TargetApi(Build.VERSION_CODES.KITKAT) 
private void kitkatSetPackage() { 
    smsIntent.setPackage(Telephony.Sms.getDefaultSmsPackage(getActivity())); 
} 

पर होना आप अन्य तरीकों को यह एनोटेशन को स्थानांतरित कर सकता है (अगर यह कोड के सभी एक विधि में है), या वर्ग यह स्वयं पर एनोटेशन डाल की जरूरत है।

+0

इस उत्तर महान के रूप में अच्छी तरह से काम करता है, लेकिन उसे स्वीकार जवाब थोड़ा तेजी से लागू करने के लिए है। – TheTool

-1

** एक विधि **

@TargetApi (Build.VERSION_CODES.KITKAT) सार्वजनिक शून्य xyzMethod() { अपने कोड में उर कोड रखो यहाँ }

कि काम करेंगे अब