我是Android新手,试图开发一个应用程序。我有一个BroadcastReceiver类和一个活动class.it是为管理音频控制(无声,振铃,振动)而创建的。这是当接收到一个SMS接收器检查邮件正文并将其与用户给定关键字进行比较(使用活动页面中的编辑文本)在这里,我遇到了一个麻烦,我通过这个字符串(editText值broadcastReceiver)。它到达那里,但内试图阻止此字符串变量被null.Any一个可以帮我...字符串无法进入广播接收器
Activity类
@Override
protected void onCreate(Bundle savedInstanceState) {.....
.......
acivatebtn.setOnClickListener(new View.OnClickListener(){....
....public void onClick(View v) {
String kslnt=txtkeysilent.getText().toString();....
Intent intent = new Intent("package.action.string");
if (checksilnt.isChecked()){intent.putExtra("extra", kslnt);}
sendBroadcast(intent);
广播接收器类
public class IncomingSms extends BroadcastReceiver {
AudioControl audio;
final SmsManager sms = SmsManager.getDefault();
private AudioManager myAudioManager;
public String silent;
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i("Receiver", "Broadcast received: " + action);
if(action.equals("package.action.string")){
silent = intent.getExtras().getString("extra");
/* int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, "senderNum: "+ state+rng+vbrt, duration);
toast.show();*/
}
myAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
final Bundle bundle = intent.getExtras();
try {
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String message = currentMessage.getDisplayMessageBody().toString();
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, "senderNum: "+ state+rng+vbrt, duration);
toast.show();
Log.i("SmsReceiver","message:" + message);
if (message.equals(silent)){myAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);}
this.abortBroadcast();
} // end for loop
} // bundle is null
} catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" +e);
}
}
}
这里值 '无声' 应包含关键字(从活动EDITTEXT)
if (message.equals(silent)){myAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);}
但无声显示了一个空值。 ..
在这个块中我显示牛逼正确(EDITTEXT字符串如下所示)
String action = intent.getAction();
Log.i("Receiver", "Broadcast received: " + action);
if(action.equals("package.action.string")){
silent= intent.getExtras().getString("extra");
/* int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, "senderNum: "+ state+rng+vbrt, duration);
toast.show();*/
}
你有没有调试过e'onReceive'方法?如果作品和'沉默'分配值?因为它可能没有价值,因为你根据条件传递它的值! –
是的,我调试了这个程序,没有错误。 '如果'。正在工作,但它不是我所期望的。无声的价值是从活动分类中分配的。' s editText –
在活动中调试并检查checksilnt.isChecked()的值。它是虚假还是真实的... – aj0822ArpitJoshi