Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 访问android中BroadcastReceiver类的onReceive方法中的ArrayList项_Java_Android_Arraylist_Broadcastreceiver - Fatal编程技术网

Java 访问android中BroadcastReceiver类的onReceive方法中的ArrayList项

Java 访问android中BroadcastReceiver类的onReceive方法中的ArrayList项,java,android,arraylist,broadcastreceiver,Java,Android,Arraylist,Broadcastreceiver,我正在开发一个应用程序,其中我想阻止用户创建列表的SMS。为此,我有一个活动,第二个是BroadcastReceiver类。在Activity类中,我有一个返回ArrayList的函数,在BroadcastReceive类中,我想访问该ArrayList,但我的代码无法访问该ArrayList。我的代码中有什么问题? 请引导我。 numberStactivity.java 这是一个列表类 public class NumberListActivity extends Activity {

我正在开发一个应用程序,其中我想阻止用户创建列表的SMS。为此,我有一个活动,第二个是BroadcastReceiver类。在Activity类中,我有一个返回ArrayList的函数,在BroadcastReceive类中,我想访问该ArrayList,但我的代码无法访问该ArrayList。我的代码中有什么问题?
请引导我。
numberStactivity.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;

    }

}    
public class numberStactivity扩展活动{
ListView numList1;
按钮btnAdd1;
public ArrayList list1=新的ArrayList();
公共阵列适配器1;
ArrayList=新建ArrayList();
阵列适配器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.sms_列表);
numList1=(ListView)findViewById(R.id.Smslist);
setContentView(R.layout.main);
按钮btn=(按钮)findViewById(R.id.btnAdd);
adapter=newarrayadapter(这是android.R.layout.simple\u list\u item\u 1,list);
OnClickListener=新的OnClickListener(){
@凌驾
公共void onClick(视图v){
EditText edit=(EditText)findViewById(R.id.txtItem);
添加(edit.getText().toString());
edit.setText(“”);
adapter.notifyDataSetChanged();
}
};
btn.setOnClickListener(listener);
numList1.setAdapter(适配器);
}
公共ArrayList getArrayList(){
退货清单;
}
}    
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扩展广播接收器{
final smsmsmanager sms=smsmsmanager.getDefault();
字符串电话号码;
字符串senderNum;
NumberStactivity ma=新的NumberStactivity();
ArrayList=新建ArrayList();
阵列适配器;
@凌驾
公共void onReceive(上下文、意图){
final Bundle=intent.getExtras();
试一试{
adapter=newarrayadapter(上下文,android.R.layout.simple\u list\u item\u 1,list);
Toast.makeText(上下文,adapter.getCount()+“”,Toast.LENGTH_LONG.show();
if(bundle!=null){
最终对象[]pdusObj=(对象[])bundle.get(“pdus”);
对于(int i=0;i
Intent in=getIntent()


ArrayList aList=in.getExtras().getIntegerArrayList(“key”)

一种方法是访问SMSLock类中的列表,将列表对象设置为静态。如果您的列表在不同的实例之间没有差异,则可以选择此选项

您是说要从
SmsLock
访问
numberstactivity
中的实例变量
list
?因为现在这两个类中有两个独立的列表。@DrewGalbraith:是的,先生,我想将列表从NumberStactivity保存到SmsLock类中。。先生,实例到实例意味着什么。意味着如果需要同一对象的多个副本,而不使用静态。静态将生成该对象的单个副本。