我正在尝试创建一个创建与API级别高于KitKat
的兼容性的短信的意图。
该代码有效,但我收到了一个警告,即API级别19是必需的。
我尝试使用@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()));
}
提前致谢!
答案 0 :(得分:10)
不要使用布尔值进行API检查。直接把它放在if语句中:
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 :(得分:4)
注释需要在方法上
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()));
}
您可以将此注释移动到其他方法(如果所有这些代码都在一个方法中),或者将注释放在它自己的类上。
答案 2 :(得分:0)
我在AOSP中不断地从一个版本过渡到另一个版本,并且我不想误导下一个使用特定的Access-Control-Allow-Methods
版本注释阅读我的代码的人。因此,您可以改为执行以下操作:
@TargetApi()
答案 3 :(得分:-1)
**将ur代码放入方法**
@TargetApi(Build.VERSION_CODES.KITKAT)
public void xyzMethod(){
your code here
}
现在可以使用