在代码中抑制 API 级警告
Suppress API level warning in code
我正在尝试创建一个意图,以创建一个兼容 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()));
}
提前致谢!
注释需要在方法上
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()));
}
您可以将此注释移动到其他方法(如果所有此代码都在一个方法中),或者将注释放在 class 它自己上。
不要使用布尔值进行 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() {}
**将您的代码放入方法中**
@TargetApi(Build.VERSION_CODES.KITKAT)
public void xyzMethod(){
your code here
}
现在可以了
我经常在 AOSP 中从一个版本转移到另一个版本,我不想用特定的 @TargetApi()
版本注释误导下一个阅读我代码的人。所以您可以改为执行以下操作:
@SuppressLint("NewApi")
public void xyzMethod() { <your_code> ... }
我正在尝试创建一个意图,以创建一个兼容 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()));
}
提前致谢!
注释需要在方法上
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()));
}
您可以将此注释移动到其他方法(如果所有此代码都在一个方法中),或者将注释放在 class 它自己上。
不要使用布尔值进行 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() {}
**将您的代码放入方法中**
@TargetApi(Build.VERSION_CODES.KITKAT)
public void xyzMethod(){
your code here
}
现在可以了
我经常在 AOSP 中从一个版本转移到另一个版本,我不想用特定的 @TargetApi()
版本注释误导下一个阅读我代码的人。所以您可以改为执行以下操作:
@SuppressLint("NewApi")
public void xyzMethod() { <your_code> ... }