title: How to send data to Flutter from native (Android)
body: <p>I need to pass data from the below class to my flutter app where the data is only available when an incoming call event happens.
  i need to pass this data(mobileNumber) to flutter (if possible i need to pass data even the flutter app is terminated) </p>
  
  <p><strong>BroadcastReciever.java</strong></p>
  
  <pre><code>package com.ashbu.flutterappbackground;
  ...
  
  public class MyBroadcastReceiver extends BroadcastReceiver {
      String phoneNumber;
  
          @Override
          public void onReceive(final Context context, Intent intent) {
              TelephonyManager telephony = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);
              telephony.listen(new PhoneStateListener(){
                  @Override
                  public void onCallStateChanged(int state, String incomingNumber) {
                      super.onCallStateChanged(state, incomingNumber);
                      phoneNumber = incomingNumber;
                      Toast.makeText(context, "TeleDuce Customer "+ incomingNumber,
                  Toast.LENGTH_LONG).show();
                  }
              },PhoneStateListener.LISTEN_CALL_STATE);
          }
  
  
     public  String getData() {
      String number = null;
      if (phoneNumber != null) {
          number = phoneNumber;
      }else {
          number = "noData";
      }
      return number;
      }
  </code></pre>
  
  <p>}
  from the above code, i need to pass incomingNumber to flutter.
  if possible - Share the data even the app is closed.</p>
  
  <p><strong>MainActivity.java</strong></p>
  
  <pre><code>public class MainActivity extends FlutterActivity {
  private static final String CHANNEL = "samples.flutter.dev/getNumber";
  
  AlarmManager alarmManager;
  PendingIntent pendingIntent;
  
  @Override
  public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
      super.configureFlutterEngine(flutterEngine);
      alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
      Intent alarmIntent = new Intent(this, MyService.class);
      pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
  
      new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
              .setMethodCallHandler(
                      (call, result) -&gt; {
  
                          // Note: this method is invoked on the main thread.
                          if (call.method.equals("getMobileNumber")) {
                              startAlarm();
                              MyBroadcastReceiver dataGEt = new MyBroadcastReceiver();
                              System.out.println(dataGEt.getData());
                              result.success(dataGEt.getData());
                          } else {
                              cancelAlarm();
                          }
                      }
              );
  }
  
  private void startAlarm() {
  
      if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.M) {
          alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, 0, pendingIntent);
      } else if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.KITKAT) {
          alarmManager.setExact(AlarmManager.RTC_WAKEUP, 0, pendingIntent);
      } else {
          alarmManager.set(AlarmManager.RTC_WAKEUP, 0, pendingIntent);
      }
  }
  
  private void cancelAlarm() {
      alarmManager.cancel(pendingIntent);
      Toast.makeText(getApplicationContext(), "Alarm Cancelled", Toast.LENGTH_LONG).show();
  }
  }
  </code></pre>
  
  <p>Currently the above code will work even the app is terminated. But i don't know if the flutter will accept the data after the app is terminated</p>