繁体   English   中英

在Android中的BroadcastReceiver类的onReceive方法中访问ArrayList项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM