Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,16 @@ public static void registerWith(PluginRegistry.Registrar registrar) {
new MethodChannel(registrar.messenger(), "plugins.flutter.io/battery");
final EventChannel eventChannel =
new EventChannel(registrar.messenger(), "plugins.flutter.io/charging");
final BatteryPlugin instance = new BatteryPlugin(registrar.context());
final BatteryPlugin instance = new BatteryPlugin(registrar);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AFAIK, registrar.context() constantly returns the same value. If that is correct, this change isn't strictly necessary. Are we doing it anyway for consistency with plugins that need the registrar to access the current Activity?

Same in other plugins that just need a Context, and not an Activity.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it's for consistency.

eventChannel.setStreamHandler(instance);
methodChannel.setMethodCallHandler(instance);
}

BatteryPlugin(Context context) {
this.context = context;
BatteryPlugin(PluginRegistry.Registrar registrar) {
this.registrar = registrar;
}

private final Context context;
private final PluginRegistry.Registrar registrar;
private BroadcastReceiver chargingStateChangeReceiver;

@Override
Expand All @@ -60,18 +60,21 @@ public void onMethodCall(MethodCall call, Result result) {
@Override
public void onListen(Object arguments, EventSink events) {
chargingStateChangeReceiver = createChargingStateChangeReceiver(events);
context.registerReceiver(
chargingStateChangeReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
registrar
.context()
.registerReceiver(
chargingStateChangeReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}

@Override
public void onCancel(Object arguments) {
context.unregisterReceiver(chargingStateChangeReceiver);
registrar.context().unregisterReceiver(chargingStateChangeReceiver);
chargingStateChangeReceiver = null;
}

private int getBatteryLevel() {
int batteryLevel = -1;
Context context = registrar.context();
if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
BatteryManager batteryManager =
(BatteryManager) context.getSystemService(context.BATTERY_SERVICE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

/** ConnectivityPlugin */
public class ConnectivityPlugin implements MethodCallHandler, StreamHandler {
private final Context context;
private final Registrar registrar;
private final ConnectivityManager manager;
private BroadcastReceiver receiver;

Expand All @@ -31,25 +31,28 @@ public static void registerWith(Registrar registrar) {
new MethodChannel(registrar.messenger(), "plugins.flutter.io/connectivity");
final EventChannel eventChannel =
new EventChannel(registrar.messenger(), "plugins.flutter.io/connectivity_status");
ConnectivityPlugin instance = new ConnectivityPlugin(registrar.context());
ConnectivityPlugin instance = new ConnectivityPlugin(registrar);
channel.setMethodCallHandler(instance);
eventChannel.setStreamHandler(instance);
}

private ConnectivityPlugin(Context context) {
this.context = context;
this.manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
private ConnectivityPlugin(Registrar registrar) {
this.registrar = registrar;
this.manager =
(ConnectivityManager) registrar.context().getSystemService(Context.CONNECTIVITY_SERVICE);
}

@Override
public void onListen(Object arguments, EventSink events) {
receiver = createReceiver(events);
context.registerReceiver(receiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
registrar
.context()
.registerReceiver(receiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}

@Override
public void onCancel(Object arguments) {
context.unregisterReceiver(receiver);
registrar.context().unregisterReceiver(receiver);
receiver = null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
public class FirebaseAdMobPlugin implements MethodCallHandler {
private static final String TAG = "flutter";

private final Activity activity;
private final Registrar registrar;
private final MethodChannel channel;

private LinearLayout banner;
Expand All @@ -28,13 +28,13 @@ public class FirebaseAdMobPlugin implements MethodCallHandler {
public static void registerWith(Registrar registrar) {
final MethodChannel channel =
new MethodChannel(registrar.messenger(), "plugins.flutter.io/firebase_admob");
channel.setMethodCallHandler(new FirebaseAdMobPlugin(registrar.activity(), channel));
channel.setMethodCallHandler(new FirebaseAdMobPlugin(registrar, channel));
}

private FirebaseAdMobPlugin(Activity activity, MethodChannel channel) {
this.activity = activity;
private FirebaseAdMobPlugin(Registrar registrar, MethodChannel channel) {
this.registrar = registrar;
this.channel = channel;
FirebaseApp.initializeApp(activity);
FirebaseApp.initializeApp(registrar.context());
}

private void callInitialize(MethodCall call, Result result) {
Expand All @@ -43,7 +43,7 @@ private void callInitialize(MethodCall call, Result result) {
result.error("no_app_id", "a non-empty AdMob appId was not provided", null);
return;
}
MobileAds.initialize(activity, appId);
MobileAds.initialize(registrar.context(), appId);
result.success(Boolean.TRUE);
}

Expand Down Expand Up @@ -93,6 +93,12 @@ public void onMethodCall(MethodCall call, Result result) {
return;
}

Activity activity = registrar.activity();
if (activity == null) {
result.error("no_activity", "firebase_admob plugin requires a foreground activity", null);
return;
}

Integer id = call.argument("id");
if (id == null) {
result.error(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,18 @@

/** Flutter plugin for Firebase Analytics. */
public class FirebaseAnalyticsPlugin implements MethodCallHandler {
private final Activity activity;
private final PluginRegistry.Registrar registrar;
private final FirebaseAnalytics firebaseAnalytics;

public static void registerWith(PluginRegistry.Registrar registrar) {
final MethodChannel channel = new MethodChannel(registrar.messenger(), "firebase_analytics");
channel.setMethodCallHandler(new FirebaseAnalyticsPlugin(registrar.activity()));
channel.setMethodCallHandler(new FirebaseAnalyticsPlugin(registrar));
}

private FirebaseAnalyticsPlugin(Activity activity) {
this.activity = activity;
FirebaseApp.initializeApp(activity);
this.firebaseAnalytics = FirebaseAnalytics.getInstance(activity);
private FirebaseAnalyticsPlugin(PluginRegistry.Registrar registrar) {
this.registrar = registrar;
FirebaseApp.initializeApp(registrar.context());
this.firebaseAnalytics = FirebaseAnalytics.getInstance(registrar.context());
}

@Override
Expand Down Expand Up @@ -81,6 +81,11 @@ private void handleSetUserId(MethodCall call, Result result) {

private void handleSetCurrentScreen(MethodCall call, Result result) {
@SuppressWarnings("unchecked")
Activity activity = registrar.activity();
if (activity == null) {
result.error("no_activity", "handleSetCurrentScreen requires a foreground activity", null);
return;
}
Map<String, Object> arguments = (Map<String, Object>) call.arguments;
final String screenName = (String) arguments.get("screenName");
final String screenClassOverride = (String) arguments.get("screenClassOverride");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

package io.flutter.firebaseauth;

import android.app.Activity;
import android.support.annotation.NonNull;
import android.util.SparseArray;
import com.google.android.gms.tasks.OnCompleteListener;
Expand All @@ -30,7 +29,7 @@

/** Flutter plugin for Firebase Auth. */
public class FirebaseAuthPlugin implements MethodCallHandler {
private final Activity activity;
private final PluginRegistry.Registrar registrar;
private final FirebaseAuth firebaseAuth;
private final SparseArray<FirebaseAuth.AuthStateListener> authStateListeners =
new SparseArray<>();
Expand All @@ -44,13 +43,13 @@ public class FirebaseAuthPlugin implements MethodCallHandler {
public static void registerWith(PluginRegistry.Registrar registrar) {
MethodChannel channel =
new MethodChannel(registrar.messenger(), "plugins.flutter.io/firebase_auth");
channel.setMethodCallHandler(new FirebaseAuthPlugin(registrar.activity(), channel));
channel.setMethodCallHandler(new FirebaseAuthPlugin(registrar, channel));
}

private FirebaseAuthPlugin(Activity activity, MethodChannel channel) {
this.activity = activity;
private FirebaseAuthPlugin(PluginRegistry.Registrar registrar, MethodChannel channel) {
this.registrar = registrar;
this.channel = channel;
FirebaseApp.initializeApp(activity);
FirebaseApp.initializeApp(registrar.context());
this.firebaseAuth = FirebaseAuth.getInstance();
}

Expand Down Expand Up @@ -112,7 +111,7 @@ private void handleLinkWithEmailAndPassword(MethodCall call, Result result) {
firebaseAuth
.getCurrentUser()
.linkWithCredential(credential)
.addOnCompleteListener(activity, new SignInCompleteListener(result));
.addOnCompleteListener(new SignInCompleteListener(result));
}

private void handleCurrentUser(MethodCall call, final Result result) {
Expand All @@ -131,9 +130,7 @@ public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
}

private void handleSignInAnonymously(MethodCall call, final Result result) {
firebaseAuth
.signInAnonymously()
.addOnCompleteListener(activity, new SignInCompleteListener(result));
firebaseAuth.signInAnonymously().addOnCompleteListener(new SignInCompleteListener(result));
}

private void handleCreateUserWithEmailAndPassword(MethodCall call, final Result result) {
Expand All @@ -144,7 +141,7 @@ private void handleCreateUserWithEmailAndPassword(MethodCall call, final Result

firebaseAuth
.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(activity, new SignInCompleteListener(result));
.addOnCompleteListener(new SignInCompleteListener(result));
}

private void handleSignInWithEmailAndPassword(MethodCall call, final Result result) {
Expand All @@ -155,7 +152,7 @@ private void handleSignInWithEmailAndPassword(MethodCall call, final Result resu

firebaseAuth
.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(activity, new SignInCompleteListener(result));
.addOnCompleteListener(new SignInCompleteListener(result));
}

private void handleSignInWithGoogle(MethodCall call, final Result result) {
Expand All @@ -166,7 +163,7 @@ private void handleSignInWithGoogle(MethodCall call, final Result result) {
AuthCredential credential = GoogleAuthProvider.getCredential(idToken, accessToken);
firebaseAuth
.signInWithCredential(credential)
.addOnCompleteListener(activity, new SignInCompleteListener(result));
.addOnCompleteListener(new SignInCompleteListener(result));
}

private void handleLinkWithGoogleCredential(MethodCall call, final Result result) {
Expand All @@ -178,7 +175,7 @@ private void handleLinkWithGoogleCredential(MethodCall call, final Result result
firebaseAuth
.getCurrentUser()
.linkWithCredential(credential)
.addOnCompleteListener(activity, new SignInCompleteListener(result));
.addOnCompleteListener(new SignInCompleteListener(result));
}

private void handleSignInWithFacebook(MethodCall call, final Result result) {
Expand All @@ -188,15 +185,15 @@ private void handleSignInWithFacebook(MethodCall call, final Result result) {
AuthCredential credential = FacebookAuthProvider.getCredential(accessToken);
firebaseAuth
.signInWithCredential(credential)
.addOnCompleteListener(activity, new SignInCompleteListener(result));
.addOnCompleteListener(new SignInCompleteListener(result));
}

private void handleSignInWithCustomToken(MethodCall call, final Result result) {
Map<String, String> arguments = call.arguments();
String token = arguments.get("token");
firebaseAuth
.signInWithCustomToken(token)
.addOnCompleteListener(activity, new SignInCompleteListener(result));
.addOnCompleteListener(new SignInCompleteListener(result));
}

private void handleSignOut(MethodCall call, final Result result) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

package io.flutter.plugins.firebasemessaging;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
Expand All @@ -26,28 +25,27 @@
/** FirebaseMessagingPlugin */
public class FirebaseMessagingPlugin extends BroadcastReceiver
implements MethodCallHandler, NewIntentListener {
private final Activity activity;
private final Registrar registrar;
private final MethodChannel channel;

private static final String CLICK_ACTION_VALUE = "FLUTTER_NOTIFICATION_CLICK";

public static void registerWith(Registrar registrar) {
final MethodChannel channel = new MethodChannel(registrar.messenger(), "firebase_messaging");
final FirebaseMessagingPlugin plugin =
new FirebaseMessagingPlugin(registrar.activity(), channel);
final FirebaseMessagingPlugin plugin = new FirebaseMessagingPlugin(registrar, channel);
registrar.addNewIntentListener(plugin);
channel.setMethodCallHandler(plugin);
}

private FirebaseMessagingPlugin(Activity activity, MethodChannel channel) {
this.activity = activity;
private FirebaseMessagingPlugin(Registrar registrar, MethodChannel channel) {
this.registrar = registrar;
this.channel = channel;
FirebaseApp.initializeApp(activity);
FirebaseApp.initializeApp(registrar.context());

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(FlutterFirebaseInstanceIDService.ACTION_TOKEN);
intentFilter.addAction(FlutterFirebaseMessagingService.ACTION_REMOTE_MESSAGE);
LocalBroadcastManager manager = LocalBroadcastManager.getInstance(activity);
LocalBroadcastManager manager = LocalBroadcastManager.getInstance(registrar.context());
manager.registerReceiver(this, intentFilter);
}

Expand All @@ -68,8 +66,10 @@ public void onReceive(Context context, Intent intent) {
@Override
public void onMethodCall(MethodCall call, Result result) {
if ("configure".equals(call.method)) {
FlutterFirebaseInstanceIDService.broadcastToken(activity);
sendMessageFromIntent("onLaunch", activity.getIntent());
FlutterFirebaseInstanceIDService.broadcastToken(registrar.context());
if (registrar.activity() != null) {
sendMessageFromIntent("onLaunch", registrar.activity().getIntent());
}
result.success(null);
} else if ("subscribeToTopic".equals(call.method)) {
String topic = call.arguments();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

package io.flutter.plugins.firebase.storage;

import android.app.Activity;
import android.net.Uri;
import android.support.annotation.NonNull;
import com.google.android.gms.tasks.OnFailureListener;
Expand All @@ -29,11 +28,11 @@ public class FirebaseStoragePlugin implements MethodCallHandler {

public static void registerWith(Registrar registrar) {
final MethodChannel channel = new MethodChannel(registrar.messenger(), "firebase_storage");
channel.setMethodCallHandler(new FirebaseStoragePlugin(registrar.activity()));
channel.setMethodCallHandler(new FirebaseStoragePlugin(registrar));
}

private FirebaseStoragePlugin(Activity activity) {
FirebaseApp.initializeApp(activity);
private FirebaseStoragePlugin(Registrar registrar) {
FirebaseApp.initializeApp(registrar.context());
this.firebaseStorage = FirebaseStorage.getInstance();
}

Expand Down
Loading