Передача строки из Receiver в MainActivity

101
04 марта 2022, 02:30

Подскажите пожалуйста как мне правильно передать строку из Receiver в MainActivity и в остальные классы, есть ресирвер который принимает данные, подставляет их в строку и должен передать в другие 3 класса, но передает строку только в один или максимум два класса, в третий не дает, как исправить данный код? Программа используется на ТСД, лазер считывает штрих или DataMatrix код.

public class ScanTestReceiver extends BroadcastReceiver {
private static final String TAG = "ScanTestReceiver";
private NotificationManager mNm = null;
private static final String SCANKEY = ScanUtil.SCANKEY;
private static final String SCAN_DECODING_BROADCAST = ScanUtil.SCAN_DECODING_BROADCAST;
public String scancode, keycode;
@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    String action = intent.getAction();
        Bundle extras = intent.getExtras();
        for (String key : extras.keySet()) {
            String v = intent.getStringExtra(key);
            Log.d("~~~~~myApplication", "~~~~~" + key + " is a key in the bundle with value " + v);
        }
        int scanKey = intent.getIntExtra(SCANKEY, -1);
        mNm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        if (SCAN_DECODING_BROADCAST.equals(action) /* && isScanKeyEnable(context,scanKey) */) {
            Intent serviceIntent = new Intent(context, ScanTestService.class);
            context.startService(serviceIntent);
            scancode = intent.getStringExtra("EXTRA_BARCODE_DECODING_SYMBOLE");
            keycode = intent.getStringExtra("EXTRA_BARCODE_DECODING_DATA");
            Log.i(TAG, "Сработало событие EXTRA_BARCODE_DECODING_DATA__" + scancode + "_" + scanKey + "_" + keycode);
            if (scancode.equals("Code 128")) {
            try {
                MainActivity  .getInstace().updateTheTextView(scancode+ "_" + keycode);
                ScanPriemSKoles .getInstace().updateTheTextView(scancode+ "_" + keycode);
            } catch (Exception e) {
            }
            } else if (scancode.equals("Data Matrix")) {
                try {
            MainActivity  .getInstace().updateTheTextView(scancode+ "_" + keycode);
                    Log.i(TAG, "Data Matrix------------------------------------для приема на склад" + action);
            RetirementScan  .getInstace().updateTheTextView(scancode+ "_" + keycode);
                    Log.i(TAG, "Data Matrix------------------------------------для выдачи в отделения" + action);
            ScanPriemSKoles .getInstace().updateTheTextView(scancode+ "_" + keycode);
                    Log.i(TAG, "Data Matrix------------------------------------для выдачи с колес" + action);
                } catch (Exception e) {
                }
            } else {
                try {
                    MainActivity  .getInstace().updateTheTextView( "Ошибка_1");
                    RetirementScan  .getInstace().updateTheTextView( "Ошибка_1");
                   // ScanPriemSKoles .getInstace().updateTheTextView( "Ошибка_1");
                } catch (Exception e) {
                }
            }
            ToneGenerator ToneGenerator1 = new ToneGenerator(STREAM_MUSIC, 30);
            ToneGenerator1.startTone(TONE_DTMF_6, 100);
    }
}

}

код MainActivity

public static MainActivity  getInstace(){
    return ins;
}
public void updateTheTextView(final String t) {
    MainActivity.this.runOnUiThread(new Runnable() {
        public void run() {

            String[] words = t.split("_");
            for(String word : words) {
            }
            x = words[0];
            z = words[1];
        }
    });
READ ALSO
не показывает бин

не показывает бин

Есть в java некий бин

70
Как работает метод paint? Почему не воспринимаются поля?

Как работает метод paint? Почему не воспринимаются поля?

Разбираюсь с методом paint(Graphics) у компонентов интерфейсаСтолкнулся с такой интересной особенностью

110
Как с помощью DownloadManager загрузить файл, размер у которого заранее неизвестен?

Как с помощью DownloadManager загрузить файл, размер у которого заранее неизвестен?

Есть следующий код, который работает при скачивании файлов с заранее известным размером (выполняется внутри AsyncTask):

94
main в war из jboss

main в war из jboss

Необходимо, что бы в программе был и web и main файл, стартующий при запуске программыСобираю для jboss с помощью мавена war и main не отрабатывает

112