You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
3.4 KiB
90 lines
3.4 KiB
package com.monero.app;
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import io.flutter.embedding.android.FlutterFragmentActivity;
|
|
import io.flutter.embedding.engine.FlutterEngine;
|
|
import io.flutter.plugins.GeneratedPluginRegistrant;
|
|
|
|
import io.flutter.plugin.common.MethodCall;
|
|
import io.flutter.plugin.common.MethodChannel;
|
|
|
|
import android.os.AsyncTask;
|
|
import android.os.Build;
|
|
import android.os.Handler;
|
|
import android.os.Looper;
|
|
import android.view.WindowManager;
|
|
|
|
import com.unstoppabledomains.resolution.DomainResolution;
|
|
import com.unstoppabledomains.resolution.Resolution;
|
|
|
|
import java.security.SecureRandom;
|
|
|
|
public class MainActivity extends FlutterFragmentActivity {
|
|
final String UTILS_CHANNEL = "com.cake_wallet/native_utils";
|
|
final int UNSTOPPABLE_DOMAIN_MIN_VERSION_SDK = 24;
|
|
|
|
@Override
|
|
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
|
|
GeneratedPluginRegistrant.registerWith(flutterEngine);
|
|
|
|
MethodChannel utilsChannel =
|
|
new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(),
|
|
UTILS_CHANNEL);
|
|
|
|
utilsChannel.setMethodCallHandler(this::handle);
|
|
}
|
|
|
|
private void handle(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
|
|
Handler handler = new Handler(Looper.getMainLooper());
|
|
|
|
try {
|
|
switch (call.method) {
|
|
case "enableWakeScreen":
|
|
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
handler.post(() -> result.success(true));
|
|
break;
|
|
case "disableWakeScreen":
|
|
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
|
handler.post(() -> result.success(true));
|
|
break;
|
|
case "sec_random":
|
|
int count = call.argument("count");
|
|
SecureRandom random = new SecureRandom();
|
|
byte bytes[] = new byte[count];
|
|
random.nextBytes(bytes);
|
|
handler.post(() -> result.success(bytes));
|
|
break;
|
|
case "getUnstoppableDomainAddress":
|
|
int version = Build.VERSION.SDK_INT;
|
|
if (version >= UNSTOPPABLE_DOMAIN_MIN_VERSION_SDK) {
|
|
getUnstoppableDomainAddress(call, result);
|
|
} else {
|
|
handler.post(() -> result.success(""));
|
|
}
|
|
break;
|
|
default:
|
|
handler.post(() -> result.notImplemented());
|
|
}
|
|
} catch (Exception e) {
|
|
handler.post(() -> result.error("UNCAUGHT_ERROR", e.getMessage(), null));
|
|
}
|
|
}
|
|
|
|
private void getUnstoppableDomainAddress(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
|
|
DomainResolution resolution = new Resolution();
|
|
Handler handler = new Handler(Looper.getMainLooper());
|
|
String domain = call.argument("domain");
|
|
String ticker = call.argument("ticker");
|
|
|
|
AsyncTask.execute(() -> {
|
|
try {
|
|
String address = resolution.getAddress(domain, ticker);
|
|
handler.post(() -> result.success(address));
|
|
} catch (Exception e) {
|
|
System.out.println("Expected Address, but got " + e.getMessage());
|
|
handler.post(() -> result.success(""));
|
|
}
|
|
});
|
|
}
|
|
} |