在代码

时间:2015-12-30 12:53:30

标签: android android-api-levels

我正在尝试创建一个创建与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()));
}

提前致谢!

4 个答案:

答案 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 
}

现在可以使用