I am trying to create an intent to create an sms with compatibility for API levels higher than KitKat
.
The code works, but I got a warning that the API level 19 is required.
I tried to solve it with @TargetApi(Build.VERSION_CODES.KITKAT)
but got a warning "Annotations
are not allowed here".
Is there an easy way to ignore this warning?
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()));
}
Thanks in advance!
Don't use a boolean for the API checking. Put it directly in the if statement:
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()));
}
That should make the warning go away. TargetApi annotations should be done at the method level:
@TargetApi(Build.VERSION_CODES.KITKAT)
public void yourKitkatMethod() {}
Annotation needs to be on a method
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()));
}
You could move this annotation to other methods (if all of this code is in one method), or put the annotation on the class it self.
I'm constantly moving from version to version in the AOSP, and I don't want to mislead the next person reading my code with a specific @TargetApi()
version annotation. So you can do the following instead:
@SuppressLint("NewApi")
public void xyzMethod() { <your_code> ... }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With