为什么它不能从 MainActivity 导入 SMSReceived 中的函数?

Why didn`t it work the imported function in SMSReceived from MainActivity?

你能告诉我为什么从 MainActivity 中导入的 SMSReceived 函数不起作用吗?

package com.example.smarthome;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class SMSReceiver extends BroadcastReceiver {
    MainActivity MainActivityObject=new MainActivity();
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        if (bundle != null){
            Toast.makeText(context, "NewSMS", Toast.LENGTH_LONG).show();
            MainActivityObject.AfisareStareLed();
            }
}
}

MainActivity 的函数是:

protected void AfisareStareLed() {
    TextView view = new TextView(this);
    Uri uriSMSURI = Uri.parse("content://sms/inbox");
    Cursor cursor = getContentResolver().query(uriSMSURI, null, null, null, null);
    while (cursor.moveToNext()){ 
        if(cursor.getString(2).equals(number) && cursor.getString(8).equals("0")){
            if(cursor.getString(13).endsWith("aprins") || cursor.getString(13).endsWith("stins")){
                TextView textStareLed = (TextView) findViewById(R.id.textStareLed);
                textStareLed.setText(cursor.getString(13));
                break;
            }
        }
      }
      markMessageRead();    
}

P.S。我想制作一个函数,当我收到短信时应该修改 TextView。

您不能像在 onReceive():

中那样自己创建 Activity 的实例
MainActivity MainActivityObject=new MainActivity();

只有 Android 框架可以正确创建 Activity 的实例,因为它需要正确设置 Context 而 Android 框架可以做到这一点.

在您的 Activity 中,您可以创建 BroadcastReceiver 的实例(您可以使用 Activity 的内部 class)并使用 [=18 注册它=].然后,在 onReceive() 中,您将可以访问 Activity 的方法,并且可以调用一个方法来更新 UI。