[英]How to call another method inside BroadcastReceiver onReceive method in android?
[英]Access ArrayList items in onReceive method of BroadcastReceiver class in android
我开发了一个我想阻止用户创建List.SMS的应用程序。为此,我有一个Activity,第二个是BroadcastReceiver类。 在Activity类中,我有一个返回ArrayList的函数,在BroadcastReceive类中,我想访问该ArrayList,但是我的代码无法访问该ArrayList。代码中的问题是什么?
请指导我。
NumberListActivity.java
这是一个列表类。
public class NumberListActivity extends Activity {
ListView numList1;
Button btnAdd1;
public ArrayList<String> list1 = new ArrayList<String>();
public ArrayAdapter<String> adapter1;
ArrayList<String> list = new ArrayList<String>();
ArrayAdapter<String> adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sms_list);
numList1 = (ListView) findViewById(R.id.Smslist);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.btnAdd);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
EditText edit = (EditText) findViewById(R.id.txtItem);
list.add(edit.getText().toString());
edit.setText("");
adapter.notifyDataSetChanged();
}
};
btn.setOnClickListener(listener);
numList1.setAdapter(adapter);
}
public ArrayList<String> getArrayList(){
return list;
}
}
SmsLock.java
在此类中,我想访问arrayList。
public class SmsLock extends BroadcastReceiver {
final SmsManager sms = SmsManager.getDefault();
String phoneNumber;
String senderNum;
NumberListActivity ma = new NumberListActivity();
ArrayList<String> list=new ArrayList<String>();
ArrayAdapter<String> adapter;
@Override
public void onReceive(Context context, Intent intent) {
final Bundle bundle = intent.getExtras();
try {
adapter=new ArrayAdapter<String>(context,android.R.layout.simple_list_item_1,list);
Toast.makeText(context, adapter.getCount()+"", Toast.LENGTH_LONG).show();
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]);
phoneNumber = currentMessage.getDisplayOriginatingAddress();
senderNum = phoneNumber;
String message = currentMessage.getDisplayMessageBody();
}
for (int i = 0; i < adapter.getCount(); i++) {
if (senderNum.contains(adapter.getItem(i))) {
abortBroadcast();
}
}
} // bundle is null
} catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" + e);
}
}
}
一种访问SMSLock类中的列表的方法是,使列表对象为static 。 如果您的列表与实例之间没有不同,则可以首选此方法。
意图= getIntent();
ArrayList aList = in.getExtras()。getIntegerArrayList(“ key”);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.