Add the ability to launch app from Crypto QR codes
OmarHatem28 committed
Aug 9, 2022 at 13:34 UTC
01adf863d06a179332136a3fd80210a38b146265
2 files changed
+46
android/app/src/main/AndroidManifestBase.xml
+9
@@ -38,6 +38,15 @@
38
android:scheme="cakewallet"
39
android:host="y.at" />
40
</intent-filter>
41
+ <!-- bitcoin qr code scheme -->
42
+ <intent-filter android:autoVerify="true">
43
+ <action android:name="android.intent.action.VIEW" />
44
+ <category android:name="android.intent.category.DEFAULT" />
45
+ <category android:name="android.intent.category.BROWSABLE" />
46
+ <data android:scheme="bitcoin" />
47
+ <data android:scheme="monero" />
48
+ <data android:scheme="litecoin" />
49
+ </intent-filter>
50
</activity>
51
<meta-data
52
android:name="flutterEmbedding"
lib/main.dart
+37
@@ -202,6 +202,8 @@ class AppState extends State<App> with SingleTickerProviderStateMixin {
202
super.initState();
203
//_handleIncomingLinks();
204
//_handleInitialUri();
205
+
206
+ initUniLinks();
207
}
208
209
@override
@@ -210,6 +212,41 @@ class AppState extends State<App> with SingleTickerProviderStateMixin {
212
super.dispose();
213
}
214
215
+ /// handle app links while the app is already started - be it in
216
+ /// the foreground or in the background.
217
+ Future<void> initUniLinks() async {
218
+ try {
219
+ stream = getLinksStream().listen((String link) {
220
+ handleDeepLinking(link);
221
+ });
222
+
223
+ final String initialLink = await getInitialLink();
224
+
225
+ handleDeepLinking(initialLink);
226
+ } catch (e) {
227
+ print(e);
228
+ }
229
+ }
230
+
231
+ void handleDeepLinking(String link) async {
232
+ if (link == null || !mounted) return;
233
+
234
+ final List<String> urlComponents = link.split(":");
235
+
236
+ switch (urlComponents.first) {
237
+ case "bitcoin":
238
+ print("@@@@@@@@@@@@@@@@@@@@@@@@@@");
239
+ print("Bitcoin QR Code: \n${link}");
240
+ break;
241
+ case "litecoin":
242
+ case "haven":
243
+ case "monero":
244
+ default:
245
+ print("@@@@@@@@@@@@@@@@@@@@@@@@@@");
246
+ print(link);
247
+ }
248
+ }
249
+
250
Future<void> _handleInitialUri() async {
251
try {
252
final uri = await getInitialUri();