Skip to content
Open
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
7 changes: 5 additions & 2 deletions uni_links/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,13 @@ rootProject.allprojects {
apply plugin: 'com.android.library'

android {
compileSdkVersion 28
if (project.android.hasProperty("namespace")) {
namespace 'name.avioli.unilinks'
}
compileSdkVersion 34

defaultConfig {
minSdkVersion 16
minSdkVersion 21
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
lintOptions {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,12 @@
import io.flutter.plugin.common.EventChannel;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.PluginRegistry;

public class UniLinksPlugin
implements FlutterPlugin,
MethodChannel.MethodCallHandler,
EventChannel.StreamHandler,
ActivityAware,
PluginRegistry.NewIntentListener {
MethodChannel.MethodCallHandler,
EventChannel.StreamHandler,
ActivityAware {

private static final String MESSAGES_CHANNEL = "uni_links/messages";
private static final String EVENTS_CHANNEL = "uni_links/events";
Expand All @@ -33,10 +31,13 @@ public class UniLinksPlugin
private boolean initialIntent = true;

private void handleIntent(Context context, Intent intent) {
String action = intent.getAction();
String dataString = intent.getDataString();
if (intent == null || intent.getAction() == null) {
return;
}

if (Intent.ACTION_VIEW.equals(intent.getAction())) {
String dataString = intent.getDataString();

if (Intent.ACTION_VIEW.equals(action)) {
if (initialIntent) {
initialLink = dataString;
initialIntent = false;
Expand All @@ -51,12 +52,7 @@ private BroadcastReceiver createChangeReceiver(final EventChannel.EventSink even
return new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// NOTE: assuming intent.getAction() is Intent.ACTION_VIEW

// Log.v("uni_links", String.format("received action: %s", intent.getAction()));

String dataString = intent.getDataString();

if (dataString == null) {
events.error("UNAVAILABLE", "Link unavailable", null);
} else {
Expand All @@ -80,23 +76,8 @@ private static void register(BinaryMessenger messenger, UniLinksPlugin plugin) {
eventChannel.setStreamHandler(plugin);
}

/** Plugin registration. */
public static void registerWith(@NonNull PluginRegistry.Registrar registrar) {
// Detect if we've been launched in background
if (registrar.activity() == null) {
return;
}

final UniLinksPlugin instance = new UniLinksPlugin();
instance.context = registrar.context();
register(registrar.messenger(), instance);

instance.handleIntent(registrar.context(), registrar.activity().getIntent());
registrar.addNewIntentListener(instance);
}

@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {}
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {}

@Override
public void onListen(Object o, EventChannel.EventSink eventSink) {
Expand All @@ -110,37 +91,36 @@ public void onCancel(Object o) {

@Override
public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
if (call.method.equals("getInitialLink")) {
if ("getInitialLink".equals(call.method)) {
result.success(initialLink);
} else if (call.method.equals("getLatestLink")) {
} else if ("getLatestLink".equals(call.method)) {
result.success(latestLink);
} else {
result.notImplemented();
}
}

@Override
public boolean onNewIntent(Intent intent) {
this.handleIntent(context, intent);
return false;
}

@Override
public void onAttachedToActivity(@NonNull ActivityPluginBinding activityPluginBinding) {
activityPluginBinding.addOnNewIntentListener(this);
this.handleIntent(this.context, activityPluginBinding.getActivity().getIntent());
activityPluginBinding.addOnNewIntentListener(intent -> {
handleIntent(context, intent);
return false;
});
handleIntent(context, activityPluginBinding.getActivity().getIntent());
}

@Override
public void onDetachedFromActivityForConfigChanges() {}

@Override
public void onReattachedToActivityForConfigChanges(
@NonNull ActivityPluginBinding activityPluginBinding) {
activityPluginBinding.addOnNewIntentListener(this);
this.handleIntent(this.context, activityPluginBinding.getActivity().getIntent());
public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding activityPluginBinding) {
activityPluginBinding.addOnNewIntentListener(intent -> {
handleIntent(context, intent);
return false;
});
handleIntent(context, activityPluginBinding.getActivity().getIntent());
}

@Override
public void onDetachedFromActivity() {}
}
}
4 changes: 2 additions & 2 deletions uni_links/example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ publish_to: 'none'
version: 1.0.0+1

environment:
sdk: '>=2.12.0-0 <3.0.0'
sdk: '>=3.0.0'

dependencies:
flutter:
sdk: flutter

# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
cupertino_icons: ^1.0.8

uni_links:
path: ../
Expand Down
4 changes: 2 additions & 2 deletions uni_links/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ dev_dependencies:
sdk: flutter

environment:
sdk: ">=2.12.0 <3.0.0"
flutter: ">=1.12.0"
sdk: '>=3.0.0'
flutter: ^3.10.1

flutter:
plugin:
Expand Down