我的代码在这里::
package maa.tic_tac_to;
import android.annotation.TargetApi;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MySMSReceiver extends BroadcastReceiver {
private static final String TAG ="";
//MySmsReceiver.class.getSimpleName();
public static final String pdu_type = "pdus";
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onReceive(Context context, Intent intent) {
// Get the SMS message.
Bundle bundle = intent.getExtras();
android.telephony.SmsMessage[] msgs;
String strMessage = "";
String strMsgBody = "";
String format = bundle.getString("format");
// Retrieve the SMS message received.
Object[] pdus = (Object[]) bundle.get(pdu_type);
if (pdus != null) {
// Check the Android version.
boolean isVersionM =
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M);
// Fill the msgs array.
msgs = new android.telephony.SmsMessage[pdus.length];
for (int i = 0; i < msgs.length; i++) {
// Check Android version and use appropriate createFromPdu.
if (isVersionM) {
// If Android version M or newer:
msgs[i] = android.telephony.SmsMessage.createFromPdu((byte[]) pdus[i], format);
} else {
// If Android version L or older:
msgs[i] = android.telephony.SmsMessage.createFromPdu((byte[]) pdus[i]);
}
// Build the message to show.
// strMessage += "SMS from " + msgs[i].getOriginatingAddress();
// strMessage += " :" + msgs[i].getMessageBody() + "\n";
strMsgBody += msgs[i].getMessageBody();
// Log and display the SMS message.
// Log.d(TAG, "onReceive: " + strMessage);
// Toast.makeText(context, strMessage, Toast.LENGTH_LONG).show();
}
try {
MainActivity.receiverHandler(context, msgs[0].getOriginatingAddress(), strMsgBody);
}
catch (Exception ex)
{
Toast.makeText(context, ex.toString(),
Toast.LENGTH_LONG).show();
}
}
}
}
当我运行上面的代码时,它说使用或覆盖了已弃用的API,并使用-Xlint:deprecation重新编译以获取详细信息
第29行有此注释:: 方法调用“ getString”可能会产生“ NullPointerException”
,这里有android建议:
检查信息:此检查分析方法控制和数据流 报告可能始终为真或假的条件, 其值被静态证明为常数的表达式,以及 可能导致合同无效的情况。 变量,方法参数和返回值标记为@Nullable或 @NotNull被视为可为空(或分别为非空)并使用 在分析过程中检查可废除合同,例如报告 可能会产生NullPointerException(NPE)错误。更复杂 可以使用@Contract注释定义合同,例如: @Contract(“ ,null-> null”)—如果方法第二秒返回null 参数为null @Contract(“ ,null-> null; _,!null->!null”)— 如果其第二个参数为null,则返回null 否则@Contract(“ true-> fail”)—典型的assertFalse方法 如果将true传递给它,则抛出异常检查可以 配置为使用自定义@Nullable
没有人可以帮助我!