1 # This file is part of NIT (http://www.nitlanguage.org).
3 # Copyright 2014 Frédéric Vachon <fredvac@gmail.com>
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
17 # Services allowing to launch activities and start/stop services using
18 # `android.content.Intent` for the android platform
22 import android
::bundle
24 private import json
::serialization
27 import android.content.Intent;
28 import android.net.Uri;
29 import android.graphics.Rect;
31 import java.util.ArrayList;
34 extern class NativeIntent in "Java" `{ android.content.Intent `}
37 new in "Java" `{ return new Intent(); `}
39 fun add_category
(category
: JavaString) in "Java" `{ self.addCategory(category); `}
40 fun add_flags(flags: Int) in "Java" `{ self.addFlags((int)flags); `}
41 fun filter_equals
(other
: NativeIntent): Bool in "Java" `{
42 return self.filterEquals(other);
44 fun action
: JavaString in "Java" `{ return self.getAction(); `}
45 fun boolean_array_extra(name: JavaString): Array[Bool] import Array[Bool],
46 Array[Bool].push in "Java" `{
47 boolean
[] java_array
= self.getBooleanArrayExtra
(name
);
48 int nit_array
= new_Array_of_Bool
();
50 for(int i
=0; i
< java_array
.length
; ++i
)
51 Array_of_Bool_push(nit_array
, java_array
[i
]);
55 fun boolean_extra(name: JavaString, def_value: Bool): Bool in "Java" `{
56 return self.getBooleanExtra
(name
, def_value
);
58 fun byte_array_extra(name: JavaString): Array[Int] import Array[Int],
59 Array[Int].add in "Java" `{
60 byte
[] java_array
= self.getByteArrayExtra
(name
);
61 int nit_array
= new_Array_of_Int
();
63 for (int i
=0; i
< java_array
.length
; ++i
)
64 Array_of_Int_add(nit_array
, java_array
[i
]);
68 fun byte_extra(name: JavaString, def_value: Int): Int in "Java" `{
69 return (int
) self.getByteExtra
(name
, (byte
) def_value
);
71 # FIXME: Java's `char
` are encoded on 16-bits whereas Nit's are on 8-bits.
72 fun char_array_extra(name: JavaString): Array[Char] import Array[Char],
73 Array[Char].add in "Java" `{
74 char
[] java_array
= self.getCharArrayExtra
(name
);
75 int nit_array
= new_Array_of_Char
();
77 for (int i
= 0; i
< java_array
.length
; ++i
)
78 Array_of_Char_add(nit_array
, java_array
[i
]);
82 # FIXME: Java's `char
` are encoded on 16-bits whereas Nit's are on 8-bits.
83 fun char_extra(name: JavaString, def_value: Char): Char in "Java" `{
84 return (int
)self.getCharExtra
(name
, (char
)def_value
);
86 fun char_sequence_array_extra(name: JavaString): Array[String]
87 import StringCopyArray, StringCopyArray.add, StringCopyArray.collection in "Java" `{
88 CharSequence[] java_array
= self.getCharSequenceArrayExtra
(name
);
89 int nit_array
= new_StringCopyArray
();
91 for (int i
= 0; i
< java_array
.length
; ++i
)
92 StringCopyArray_add(nit_array
, (String) java_array
[i
]);
94 return StringCopyArray_collection(nit_array
);
96 fun char_sequence_array_list_extra(name: JavaString): Array[String]
97 import StringCopyArray, StringCopyArray.add, StringCopyArray.collection in "Java" `{
98 ArrayList<CharSequence> java_array
= self.getCharSequenceArrayListExtra
(name
);
99 int nit_array
= new_StringCopyArray
();
101 if (java_array
== null) return nit_array
;
103 for (CharSequence element
: java_array
)
104 StringCopyArray_add(nit_array
, (String) element
);
106 return StringCopyArray_collection(nit_array
);
108 fun char_sequence_extra(name: JavaString): JavaString in "Java" `{
109 return (String) self.getCharSequenceExtra
(name
);
111 fun categories: HashSet[String] import StringCopyHashSet,
112 StringCopyHashSet.add, StringCopyHashSet.collection in "Java" `{
113 Set<String> java_set
= self.getCategories
();
114 int nit_hashset
= new_StringCopyHashSet
();
116 if (java_set
== null) return nit_hashset
;
118 for (String element
: java_set
)
119 StringCopyHashSet_add(nit_hashset
, element
);
121 return StringCopyHashSet_collection(nit_hashset
);
123 # Returns the Uri as an encoded String
124 fun data: JavaString in "Java" `{ return self.getDataString(); `}
125 fun double_array_extra
(name
: JavaString): Array[Float] import Array[Float],
126 Array[Float].push
in "Java" `{
127 double[] java_array = self.getDoubleArrayExtra(name);
128 int nit_array = new_Array_of_Float();
130 for(int i=0; i < java_array.length; ++i)
131 Array_of_Float_push(nit_array, java_array[i]);
135 fun double_extra
(name
: JavaString, def_value
: Float): Float in "Java" `{
136 return self.getDoubleExtra(name, def_value);
138 fun flags
: Int in "Java" `{ return self.getFlags(); `}
139 fun float_array_extra(name: JavaString): Array[Float] import Array[Float],
140 Array[Float].push in "Java" `{
141 float
[] java_array
= self.getFloatArrayExtra
(name
);
142 int nit_array
= new_Array_of_Float
();
144 for(int i
=0; i
< java_array
.length
; ++i
)
145 Array_of_Float_push(nit_array
, java_array
[i
]);
149 fun float_extra(name: JavaString, def_value: Float): Float in "Java" `{
150 return self.getFloatExtra
(name
, (float
) def_value
);
152 fun int_array_extra(name: JavaString): Array[Int] import Array[Int],
153 Array[Int].push in "Java" `{
154 int
[] java_array
= self.getIntArrayExtra
(name
);
155 int nit_array
= new_Array_of_Int
();
157 for(int i
=0; i
< java_array
.length
; ++i
)
158 Array_of_Int_push(nit_array
, java_array
[i
]);
162 fun int_extra(name: JavaString, def_value: Int): Int in "Java" `{
163 return self.getIntExtra
(name
, (int
)def_value
);
165 fun long_array_extra(name: JavaString): Array[Int] import Array[Int],
166 Array[Int].push in "Java" `{
167 long
[] java_array
= self.getLongArrayExtra
(name
);
168 int nit_array
= new_Array_of_Int
();
170 for(int i
=0; i
< java_array
.length
; ++i
)
171 Array_of_Int_push(nit_array
, (int
) java_array
[i
]);
175 fun long_extra(name: JavaString, def_value: Int): Int in "Java" `{
176 return (int
) self.getLongExtra
(name
, def_value
);
178 fun get_package: JavaString in "Java" `{ return self.getPackage(); `}
179 fun scheme
: JavaString in "Java" `{ return self.getScheme(); `}
180 fun short_array_extra(name: JavaString): Array[Int] import Array[Int],
181 Array[Int].push in "Java" `{
182 short
[] java_array
= self.getShortArrayExtra
(name
);
183 int nit_array
= new_Array_of_Int
();
185 for(int i
=0; i
< java_array
.length
; ++i
)
186 Array_of_Int_push(nit_array
, (int
) java_array
[i
]);
190 fun short_extra(name: JavaString, def_value: Int): Int in "Java" `{
191 return self.getShortExtra
(name
, (short
) def_value
);
193 fun string_array_extra(name: JavaString): Array[String]
194 import StringCopyArray, StringCopyArray.add, StringCopyArray.collection in "Java" `{
195 String[] java_array
= self.getStringArrayExtra
(name
);
196 int nit_array
= new_StringCopyArray
();
198 for(int i
=0; i
< java_array
.length
; ++i
)
199 StringCopyArray_add(nit_array
, java_array
[i
]);
201 return StringCopyArray_collection(nit_array
);
203 fun string_array_list_extra(name: JavaString): Array[String]
204 import StringCopyArray, StringCopyArray.add, StringCopyArray.collection in "Java" `{
205 ArrayList<String> java_array
= self.getStringArrayListExtra
(name
);
206 int nit_array
= new_StringCopyArray
();
208 for (String element
: java_array
)
209 StringCopyArray_add(nit_array
, element
);
211 return StringCopyArray_collection(nit_array
);
213 fun string_extra(name: JavaString): JavaString in "Java" `{
214 String return_value
= self.getStringExtra
(name
);
215 if (return_value
== null) return "";
219 fun get_type: JavaString in "Java" `{ return self.getType(); `}
220 fun has_category
(category
: JavaString): Bool in "Java" `{
221 return self.hasCategory(category);
223 fun has_extra
(extra
: JavaString): Bool in "Java" `{ return self.hasExtra(extra); `}
224 fun has_file_descriptors: Bool in "Java" `{ return self.hasFileDescriptors(); `}
225 fun add_extra_double
(name
: JavaString, value
: Float): NativeIntent in "Java" `{
226 return self.putExtra(name, value);
228 fun add_extra_array_of_double
(name
: JavaString, value
: Array[Float]): NativeIntent
229 import Array[Float].length
, Array[Float].[] in "Java" `{
230 double[] java_array = new double[(int)Array_of_Float_length(value)];
232 for (int i=0; i < java_array.length; ++i)
233 java_array[i] = Array_of_Float__index(value, i);
235 return self.putExtra(name, java_array);
237 # FIXME: Java's `char` are encoded on 16-bits whereas Nit's are on 8-bits.
238 fun add_extra_char
(name
: JavaString, value
: Char): NativeIntent in "Java" `{
239 return self.putExtra(name, value);
241 # FIXME: Java's `char` are encoded on 16-bits whereas Nit's are on 8-bits.
242 fun add_extra_array_of_char
(name
: JavaString, value
: Array[Char]): NativeIntent
243 import Array[Char].length
, Array[Char].[] in "Java" `{
244 char[] java_array = new char[(int)Array_of_Char_length(value)];
246 for (int i=0; i < java_array.length; ++i)
247 java_array[i] = (char)Array_of_Char__index(value, i);
249 return self.putExtra(name, java_array);
251 fun add_extra_char_sequence
(name
: JavaString, value
: JavaString): NativeIntent
253 return self.putExtra(name, value);
255 fun add_extra_array_of_char_sequence
(name
: JavaString, value
: Array[JavaString]):
256 NativeIntent import Array[JavaString].length
, Array[JavaString].[] in "Java" `{
257 CharSequence[] java_array = new CharSequence[(int)Array_of_JavaString_length(value)];
259 for (int i=0; i < java_array.length; ++i)
260 java_array[i] = Array_of_JavaString__index(value, i);
262 return self.putExtra(name, java_array);
264 fun add_extra_bundle
(name
: JavaString, value
: NativeBundle): NativeIntent
266 return self.putExtra(name, value);
268 fun add_extra_int
(name
: JavaString, value
: Int): NativeIntent in "Java" `{
269 return self.putExtra(name, value);
271 fun add_extra_array_of_int
(name
: JavaString, value
: Array[Int]): NativeIntent
272 import Array[Int].length
, Array[Int].[] in "Java" `{
273 int[] java_array = new int[(int)Array_of_Int_length(value)];
275 for (int i=0; i < java_array.length; ++i)
276 java_array[i] = (int)Array_of_Int__index(value, i);
278 return self.putExtra(name, java_array);
280 fun add_extra_array_list_of_int
(name
: JavaString, value
: Array[Int]): NativeIntent
281 import Array[Int].length
, Array[Int].[] in "Java" `{
282 int length = (int)Array_of_Int_length(value);
283 ArrayList<Integer> java_array = new ArrayList<Integer>(length);
285 for (int i=0; i < length; ++i)
286 java_array.add((int)Array_of_Int__index(value, i));
288 return self.putExtra(name, java_array);
290 fun add_extra_byte
(name
: JavaString, value
: Int): NativeIntent in "Java" `{
291 return self.putExtra(name, (byte) value);
293 fun add_extra_array_of_byte
(name
: JavaString, value
: Int): NativeIntent in "Java" `{
294 return self.putExtra(name, (byte) value);
296 fun add_extra_long
(name
: JavaString, value
: Int): NativeIntent in "Java" `{
297 return self.putExtra(name, value);
299 fun add_extra_array_of_long
(name
: JavaString, value
: Array[Int]): NativeIntent
300 import Array[Int].length
, Array[Int].[] in "Java" `{
301 long[] java_array = new long[(int)Array_of_Int_length(value)];
303 for (int i=0; i < java_array.length; ++i)
304 java_array[i] = Array_of_Int__index(value, i);
306 return self.putExtra(name, java_array);
308 fun add_extra_float
(name
: JavaString, value
: Float): NativeIntent in "Java" `{
309 return self.putExtra(name, value);
311 fun add_extra_array_of_float
(name
: JavaString, value
: Array[Float]): NativeIntent
312 import Array[Float].length
, Array[Float].[] in "Java" `{
313 float[] java_array = new float[(int)Array_of_Float_length(value)];
315 for (int i=0; i < java_array.length; ++i)
316 java_array[i] = (float) Array_of_Float__index(value, i);
318 return self.putExtra(name, java_array);
320 fun add_extra_string
(name
: JavaString, value
: JavaString): NativeIntent in "Java" `{
321 return self.putExtra(name, value);
323 fun add_extra_array_of_string
(name
: JavaString, value
: Array[JavaString]): NativeIntent
324 import Array[JavaString].length
, Array[JavaString].[] in "Java" `{
325 String[] java_array = new String[(int)Array_of_JavaString_length(value)];
327 for (int i=0; i < java_array.length; ++i)
328 java_array[i] = Array_of_JavaString__index(value, i);
330 return self.putExtra(name, java_array);
332 fun add_extra_array_list_of_string
(name
: JavaString, value
: Array[JavaString]): NativeIntent
333 import Array[JavaString].length
, Array[JavaString].[] in "Java" `{
334 int length = (int)Array_of_JavaString_length(value);
335 ArrayList<String> java_array = new ArrayList<String>(length);
337 for (int i=0; i < length; ++i) {
338 java_array.add(Array_of_JavaString__index(value, i));
341 return self.putExtra(name, java_array);
343 fun add_extra_bool
(name
: JavaString, value
: Bool): NativeIntent in "Java" `{
344 return self.putExtra(name, value);
346 fun add_extra_array_of_bool
(name
: JavaString, value
: Array[Bool]): NativeIntent
347 import Array[Bool].length
, Array[Bool].[] in "Java" `{
348 boolean[] java_array = new boolean[(int)Array_of_Bool_length(value)];
350 for (int i=0; i < java_array.length; ++i)
351 java_array[i] = Array_of_Bool__index(value, i);
353 return self.putExtra(name, java_array);
355 fun add_extra_short
(name
: JavaString, value
: Int): NativeIntent in "Java" `{
356 return self.putExtra(name, value);
358 fun add_extra_array_of_short
(name
: JavaString, value
: Array[Int]): NativeIntent
359 import Array[Int].length
, Array[Int].[] in "Java" `{
360 short[] java_array = new short[(int)Array_of_Int_length(value)];
362 for (int i=0; i < java_array.length; ++i)
363 java_array[i] = (short) Array_of_Int__index(value, i);
365 return self.putExtra(name, java_array);
367 fun copy_extras
(src
: NativeIntent): NativeIntent in "Java" `{ return self.putExtras(src); `}
368 fun add_extras(src: NativeBundle): NativeIntent in "Java" `{ return self.putExtras(src); `}
369 fun remove_category
(category
: JavaString) in "Java" `{ self.removeCategory(category); `}
370 fun remove_extra(name: JavaString) in "Java" `{ self.removeExtra(name); `}
371 fun replace_extras
(src
: NativeIntent): NativeIntent in "Java" `{
372 return self.replaceExtras(src);
374 fun resolve_activity
(pm
: NativePackageManager): NativeComponentName in "Java" `{
375 return self.resolveActivity(pm);
377 fun resolve_type
(context
: NativeActivity): JavaString in "Java" `{
378 return self.resolveType(context);
380 fun action
=(action
: JavaString): NativeIntent in "Java" `{ return self.setAction(action); `}
381 fun class_=(package_context: NativeActivity, class_name: JavaString): NativeIntent
383 Class<?> java_class
= null;
385 java_class
= Class.forName
(class_name
);
386 } catch
(Exception e
) {
389 return self.setClass
(package_context
, java_class
);
391 fun class_name=(package_context: NativeActivity, class_name: JavaString): NativeIntent
393 return self.setClassName
(package_context
, class_name
);
395 fun set_class_name(package_name: JavaString, class_name: JavaString): NativeIntent
397 return self.setClassName
(package_name
, class_name
);
399 fun data=(data_uri: JavaString): NativeIntent in "Java" `{
400 return self.setData
(Uri.parse
(data_uri
));
402 fun data_and_type=(data_uri: JavaString, type_: JavaString): NativeIntent in "Java" `{
403 return self.setDataAndType
(Uri.parse
(data_uri
), type_
);
405 fun flags=(flags: Int): NativeIntent in "Java" `{ return self.setFlags((int)flags); `}
406 fun package_name
=(package_name
: JavaString): NativeIntent in "Java" `{
407 return self.setPackage(package_name);
409 fun source_bounds
=(left
, top
, right
, bottom
: Int) in "Java" `{
410 self.setSourceBounds(new Rect((int)left, (int)top, (int)right, (int)bottom));
412 fun mime_type
=(mime_type
: JavaString): NativeIntent in "Java" `{
413 return self.setType(mime_type);
415 fun to_native_s
: JavaString in "Java" `{ return self.toString(); `}
416 fun to_uri(flags: Int): JavaString in "Java" `{ return self.toUri((int)flags); `}
419 redef fun new_global_ref
import sys
, Sys.jni_env
`{
420 Sys sys = NativeIntent_sys(self);
421 JNIEnv *env = Sys_jni_env(sys);
422 return (*env)->NewGlobalRef(env, self);
426 extern class NativePackageManager in "Java" `{ android.content.pm.PackageManager `}
429 extern class NativeComponentName in "Java" `{ android.content.ComponentName `}
432 # Contains a set of actions that can be performed by the intent
433 # Designed to be used with the `intent_action` function
434 # Example : `intent_action.main`
436 # For further details on actions, refer to Android Intent documentation
439 # Standard Activity Action
440 fun main
: JavaString in "Java" `{ return Intent.ACTION_MAIN; `}
441 fun view: JavaString in "Java" `{ return Intent.ACTION_VIEW; `}
442 fun attach_data
: JavaString in "Java" `{ return Intent.ACTION_ATTACH_DATA; `}
443 fun edit: JavaString in "Java" `{ return Intent.ACTION_EDIT; `}
444 fun pick
: JavaString in "Java" `{ return Intent.ACTION_PICK; `}
445 fun chooser: JavaString in "Java" `{ return Intent.ACTION_CHOOSER; `}
446 fun get_content
: JavaString in "Java" `{ return Intent.ACTION_GET_CONTENT; `}
447 fun dial: JavaString in "Java" `{ return Intent.ACTION_DIAL; `}
448 fun call
: JavaString in "Java" `{ return Intent.ACTION_CALL; `}
449 fun send: JavaString in "Java" `{ return Intent.ACTION_SEND; `}
450 fun sent_to
: JavaString in "Java" `{ return Intent.ACTION_SENDTO; `}
451 fun answer: JavaString in "Java" `{ return Intent.ACTION_ANSWER; `}
452 fun insert
: JavaString in "Java" `{ return Intent.ACTION_INSERT; `}
453 fun delete: JavaString in "Java" `{ return Intent.ACTION_DELETE; `}
454 fun run
: JavaString in "Java" `{ return Intent.ACTION_RUN; `}
455 fun sync: JavaString in "Java" `{ return Intent.ACTION_SYNC; `}
456 fun pick_activity
: JavaString in "Java" `{ return Intent.ACTION_PICK_ACTIVITY; `}
457 fun search: JavaString in "Java" `{ return Intent.ACTION_SEARCH; `}
458 fun web_search
: JavaString in "Java" `{ return Intent.ACTION_WEB_SEARCH; `}
459 fun factory_test: JavaString in "Java" `{ return Intent.ACTION_FACTORY_TEST; `}
461 # Standard Broadcast Actions
462 fun time_tick
: JavaString in "Java" `{ return Intent.ACTION_TIME_TICK; `}
463 fun time_changed: JavaString in "Java" `{ return Intent.ACTION_TIME_CHANGED; `}
464 fun timezone_changed
: JavaString in "Java" `{ return Intent.ACTION_TIMEZONE_CHANGED; `}
465 fun boot_completed: JavaString in "Java" `{ return Intent.ACTION_BOOT_COMPLETED; `}
466 fun package_added
: JavaString in "Java" `{ return Intent.ACTION_PACKAGE_ADDED; `}
467 fun package_changed: JavaString in "Java" `{ return Intent.ACTION_PACKAGE_CHANGED; `}
468 fun package_removed
: JavaString in "Java" `{ return Intent.ACTION_PACKAGE_REMOVED; `}
469 fun package_restarted: JavaString in "Java" `{ return Intent.ACTION_PACKAGE_RESTARTED; `}
470 fun package_data_cleared
: JavaString in "Java" `{
471 return Intent.ACTION_PACKAGE_DATA_CLEARED;
473 fun uid_removed
: JavaString in "Java" `{ return Intent.ACTION_UID_REMOVED; `}
474 fun battery_changed: JavaString in "Java" `{ return Intent.ACTION_BATTERY_CHANGED; `}
475 fun power_connected
: JavaString in "Java" `{ return Intent.ACTION_POWER_CONNECTED; `}
476 fun power_disconnected: JavaString in "Java" `{ return Intent.ACTION_POWER_DISCONNECTED; `}
477 fun shutdown
: JavaString in "Java" `{ return Intent.ACTION_SHUTDOWN; `}
480 # A category gives extra information about the action to execute
481 # Designed to be used with the `intent_category
` function
482 # Example : `intent_category
.home
`
484 # For further details on categories, refer to Android Intent documentation
486 fun alternative: JavaString in "Java" `{ return Intent.CATEGORY_ALTERNATIVE; `}
487 fun car_dock
: JavaString in "Java" `{ return Intent.CATEGORY_CAR_DOCK; `}
488 fun car_mode: JavaString in "Java" `{ return Intent.CATEGORY_CAR_MODE; `}
489 fun default
: JavaString in "Java" `{ return Intent.CATEGORY_DEFAULT; `}
490 fun desk_dock: JavaString in "Java" `{ return Intent.CATEGORY_DESK_DOCK; `}
491 fun development_preference
: JavaString in "Java" `{
492 return Intent.CATEGORY_DEVELOPMENT_PREFERENCE;
494 fun embed
: JavaString in "Java" `{ return Intent.CATEGORY_EMBED; `}
495 fun framework_instrumentation_test: JavaString in "Java" `{
496 return Intent.CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST;
498 fun home: JavaString in "Java" `{ return Intent.CATEGORY_HOME; `}
499 fun info
: JavaString in "Java" `{ return Intent.CATEGORY_INFO; `}
500 fun launcher: JavaString in "Java" `{ return Intent.CATEGORY_LAUNCHER; `}
501 fun monkey
: JavaString in "Java" `{ return Intent.CATEGORY_MONKEY; `}
502 fun openable: JavaString in "Java" `{ return Intent.CATEGORY_OPENABLE; `}
503 fun preference
: JavaString in "Java" `{ return Intent.CATEGORY_PREFERENCE; `}
504 fun sample_code: JavaString in "Java" `{ return Intent.CATEGORY_SAMPLE_CODE; `}
505 fun selected_alternative
: JavaString in "Java" `{
506 return Intent.CATEGORY_SELECTED_ALTERNATIVE;
508 fun tab
: JavaString in "Java" `{ return Intent.CATEGORY_TAB; `}
509 fun test: JavaString in "Java" `{ return Intent.CATEGORY_TEST; `}
510 fun unit_test
: JavaString in "Java" `{ return Intent.CATEGORY_UNIT_TEST; `}
513 # Used to add any additional information.
515 # For further details on extras, refer to Android Intent documentation
517 fun alarm_count: JavaString in "Java" `{ return Intent.EXTRA_ALARM_COUNT; `}
518 fun bcc
: JavaString in "Java" `{ return Intent.EXTRA_BCC; `}
519 fun cc: JavaString in "Java" `{ return Intent.EXTRA_CC; `}
520 fun changed_component_name
: JavaString in "Java" `{
521 return Intent.EXTRA_CHANGED_COMPONENT_NAME;
523 fun changed_component_name_list
: JavaString in "Java" `{
524 return Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST;
526 fun changed_package_list
: JavaString in "Java" `{
527 return Intent.EXTRA_CHANGED_PACKAGE_LIST;
529 fun changed_uid_list
: JavaString in "Java" `{ return Intent.EXTRA_CHANGED_UID_LIST; `}
530 fun data_removed: JavaString in "Java" `{ return Intent.EXTRA_DATA_REMOVED; `}
531 fun dock_state
: JavaString in "Java" `{ return Intent.EXTRA_DOCK_STATE; `}
532 fun dock_state_car: Int in "Java" `{ return Intent.EXTRA_DOCK_STATE_CAR; `}
533 fun dock_state_desk
: Int in "Java" `{ return Intent.EXTRA_DOCK_STATE_DESK; `}
534 fun dock_state_undocked: Int in "Java" `{ return Intent.EXTRA_DOCK_STATE_UNDOCKED; `}
535 fun dont_kill_app
: JavaString in "Java" `{ return Intent.EXTRA_DONT_KILL_APP; `}
536 fun email: JavaString in "Java" `{ return Intent.EXTRA_EMAIL; `}
537 fun initial_intents
: JavaString in "Java" `{ return Intent.EXTRA_INITIAL_INTENTS; `}
538 fun intent: JavaString in "Java" `{ return Intent.EXTRA_INTENT; `}
539 fun key_event
: JavaString in "Java" `{ return Intent.EXTRA_KEY_EVENT; `}
540 fun phone_number: JavaString in "Java" `{ return Intent.EXTRA_PHONE_NUMBER; `}
541 fun remote_intent_token
: JavaString in "Java" `{
542 return Intent.EXTRA_REMOTE_INTENT_TOKEN;
544 fun replacing
: JavaString in "Java" `{ return Intent.EXTRA_REPLACING; `}
545 fun shortcut_icon: JavaString in "Java" `{ return Intent.EXTRA_SHORTCUT_ICON; `}
546 fun shortcut_icon_resource
: JavaString in "Java" `{
547 return Intent.EXTRA_SHORTCUT_ICON_RESOURCE;
549 fun shortcut_intent
: JavaString in "Java" `{ return Intent.EXTRA_SHORTCUT_INTENT; `}
550 fun stream: JavaString in "Java" `{ return Intent.EXTRA_STREAM; `}
551 fun subject
: JavaString in "Java" `{ return Intent.EXTRA_SUBJECT; `}
552 fun template: JavaString in "Java" `{ return Intent.EXTRA_TEMPLATE; `}
553 fun text
: JavaString in "Java" `{ return Intent.EXTRA_TEXT; `}
554 fun title: JavaString in "Java" `{ return Intent.EXTRA_TITLE; `}
555 fun uid
: JavaString in "Java" `{ return Intent.EXTRA_UID; `}
558 # A Flag controls how to handle the Intent
559 # Designed to be used with the `intent_flag
` function
560 # Example : `intent_flag
.activity_brought_to_front
`
562 # For further details on flags, refer to Android Intent documentation
564 fun activity_brought_to_front: Int in "Java" `{
565 return Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT;
567 fun activity_clear_top: Int in "Java" `{
568 return Intent.FLAG_ACTIVITY_CLEAR_TOP;
570 fun activity_clear_when_task_reset: Int in "Java" `{
571 return Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET;
573 fun activity_exclude_from_recents: Int in "Java" `{
574 return Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
576 fun activity_forward_result: Int in "Java" `{
577 return Intent.FLAG_ACTIVITY_FORWARD_RESULT;
579 fun activity_launched_from_history: Int in "Java" `{
580 return Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY;
582 fun activity_multiple_task: Int in "Java" `{
583 return Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
585 fun activity_new_task: Int in "Java" `{
586 return Intent.FLAG_ACTIVITY_NEW_TASK;
588 fun activity_no_animation: Int in "Java" `{
589 return Intent.FLAG_ACTIVITY_NO_ANIMATION;
591 fun activity_no_history: Int in "Java" `{
592 return Intent.FLAG_ACTIVITY_NO_HISTORY;
594 fun activity_no_user_action: Int in "Java" `{
595 return Intent.FLAG_ACTIVITY_NO_USER_ACTION;
597 fun activity_previous_is_top: Int in "Java" `{
598 return Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP;
600 fun activity_reorder_to_front: Int in "Java" `{
601 return Intent.FLAG_ACTIVITY_REORDER_TO_FRONT;
603 fun activity_reset_task_if_needed: Int in "Java" `{
604 return Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED;
606 fun activity_single_top: Int in "Java" `{
607 return Intent.FLAG_ACTIVITY_SINGLE_TOP;
609 fun debug_log_resolution: Int in "Java" `{
610 return Intent.FLAG_DEBUG_LOG_RESOLUTION;
612 fun from_background: Int in "Java" `{
613 return Intent.FLAG_FROM_BACKGROUND;
615 fun grant_read_uri_permission: Int in "Java" `{
616 return Intent.FLAG_GRANT_READ_URI_PERMISSION;
618 fun grant_write_uri_permission: Int in "Java" `{
619 return Intent.FLAG_GRANT_WRITE_URI_PERMISSION;
621 fun receiver_registered_only: Int in "Java" `{
622 return Intent.FLAG_RECEIVER_REGISTERED_ONLY;
624 fun receiver_replace_pending: Int in "Java" `{
625 return Intent.FLAG_RECEIVER_REPLACE_PENDING;
629 # Services allowing to launch an activity and start/stop services
631 protected var intent: NativeIntent = (new NativeIntent).new_global_ref is lazy
633 # The general action to be performed
636 # # TODO better example
637 # intent.action = intent_action.view.to_s
639 fun action=(action: String)
641 sys.jni_env.push_local_frame(1)
642 intent.action = action.to_java_string
643 sys.jni_env.pop_local_frame
646 # Returns the action to be performed or `null` if none
647 fun action: nullable String do
648 var result = intent.action.to_s
649 if result == "" then return null
653 # Add category to the intent
654 # Only activities providing all of the requested categories will be used
657 # # TODO better example
658 # intent.add_category(intent_category.home.to_s)
660 # Returns `self` allowing fluent programming
661 fun add_category(category: String): Intent
663 sys.jni_env.push_local_frame(1)
664 intent.add_category(category.to_java_string)
665 sys.jni_env.pop_local_frame
669 # Returns all the intent categories or `null` if none
670 fun categories: nullable HashSet[String]
672 var string_set = intent.categories
673 if string_set.is_empty then return null
678 # Sets the data uri the intent is working on
679 # Automatically clears the type field set using `mime_type
=` method as it
680 # uses the data uri to determine the MIME type
681 # Note: The Uri string has to comply with RFC 2396
682 fun data=(data_uri: String)
684 sys.jni_env.push_local_frame(1)
685 intent.data = data_uri.to_java_string
686 sys.jni_env.pop_local_frame
689 # Returns the data Uri the data is operating on or `null` if none
690 fun data: nullable String
692 var result = intent.data.to_s
693 if result == "" then return null
697 # Sets an explicit MIME data type to be handled by the intent, for example
698 # the return data type
699 # Automatically clears the data type field set using `data
=` method
700 fun mime_type=(mime_type: String)
702 sys.jni_env.push_local_frame(1)
703 intent.mime_type = mime_type.to_java_string
704 sys.jni_env.pop_local_frame
707 # Add a flag to be used by the intent
710 # # TODO better example
711 # intent.add_flags(intent_flag.activity_new_task)
713 # Returns `self` allowing fluent programming
714 fun add_flags(flags: Int): Intent
716 intent.add_flags(flags)
720 # Returns an `Int` representing all the intent flags
721 fun flags: Int do return intent.flags
723 # Returns the package name the intent resolution is limited to
724 # Returns `null` if not defined
725 fun package_name: nullable String do
726 var result = intent.get_package.to_s
727 if result == "" then return null
731 # Returns the set MIME and `null` if none
732 fun type_name: nullable String do
733 var result = intent.get_type.to_s
734 if result == "" then return null
738 # Returns `true` if the intent contains the given category
739 fun has_category(category: String): Bool
741 sys.jni_env.push_local_frame(1)
742 var return_value = intent.has_category(category.to_java_string)
743 sys.jni_env.pop_local_frame
747 # Returns `true` if the intent contains the given extra
748 fun has_extra(extra: String): Bool
750 sys.jni_env.push_local_frame(1)
751 var return_value = intent.has_extra(extra.to_java_string)
752 sys.jni_env.pop_local_frame
756 # Removes the given category
757 # Returns `self` allowing fluent programming
758 fun remove_category(category: String): Intent
760 sys.jni_env.push_local_frame(1)
761 intent.remove_category(category.to_java_string)
762 sys.jni_env.pop_local_frame
766 # Removes the given extra
767 # Returns `self` allowing fluent programming
768 fun remove_extra(name: String): Intent
770 sys.jni_env.push_local_frame(1)
771 intent.remove_extra(name.to_java_string)
772 sys.jni_env.pop_local_frame
776 # Retrieves the `Array[Bool]` extra stored as Java `boolean
[]` with the
778 fun extra_bool_array(name: String): Array[Bool]
780 sys.jni_env.push_local_frame(1)
781 var nit_array = intent.boolean_array_extra(name.to_java_string)
782 sys.jni_env.pop_local_frame
786 # Retrieves the `Bool` extra stored with the corresponding name
787 fun extra_bool(name: String, def_value: Bool): Bool
789 sys.jni_env.push_local_frame(1)
790 var nit_bool = intent.boolean_extra(name.to_java_string, def_value)
791 sys.jni_env.pop_local_frame
795 # Retrieves the `Array[Int]` extra stored as Java `byte
[]` with the
797 fun extra_byte_array(name: String): Array[Int]
799 sys.jni_env.push_local_frame(1)
800 var nit_array = intent.byte_array_extra(name.to_java_string)
801 sys.jni_env.pop_local_frame
805 # Retrieves the `Int` extra stored as Java `byte
` with the corresponding name
806 fun extra_byte(name: String, def_value: Int): Int
808 sys.jni_env.push_local_frame(1)
809 var nit_int = intent.byte_extra(name.to_java_string, def_value)
810 sys.jni_env.pop_local_frame
814 # Retrieves the `Array[Char]` extra stored as Java `char
[]` with the
816 # FIXME: Java's `char
` are encoded on 16-bits whereas Nit's are on 8-bits.
817 fun extra_char_array(name: String): Array[Char]
819 sys.jni_env.push_local_frame(1)
820 var nit_array = intent.char_array_extra(name.to_java_string)
821 sys.jni_env.pop_local_frame
825 # Retrieves the `Char` extra stored as Java `char
` with the
827 # FIXME: Java's `char
` are encoded on 16-bits whereas Nit's are on 8-bits.
828 fun extra_char(name: String, def_value: Char): Char
830 sys.jni_env.push_local_frame(1)
831 var nit_char = intent.char_extra(name.to_java_string, def_value)
832 sys.jni_env.pop_local_frame
836 # Retrieves the `String` extra stored as Java `CharSequence` with the
838 fun extra_char_sequence(name: String, def_value: String ): String
840 sys.jni_env.push_local_frame(1)
842 intent.char_sequence_extra(name.to_java_string).to_s
843 sys.jni_env.pop_local_frame
847 # Retrieves the `Array[String]` extra stored as Java `ArrayList<CharSequence>`
848 # with the corresponding name
849 fun extra_char_sequence_array_list_extra(name: String): Array[String]
851 sys.jni_env.push_local_frame(1)
852 var string_array = intent.char_sequence_array_list_extra(name.to_java_string)
853 sys.jni_env.pop_local_frame
857 # Retrieves the `Array[String]` extra stored as Java `CharSequence[]`
858 # with the corresponding name
859 fun extra_char_sequence_array(name: String): Array[String]
861 sys.jni_env.push_local_frame(1)
862 var string_array = intent.char_sequence_array_list_extra(name.to_java_string)
863 sys.jni_env.pop_local_frame
867 # Retrieves the `Array[Float]` extra stored as Java `double
[]` with the
869 fun extra_double_array(name: String): Array[Float]
871 sys.jni_env.push_local_frame(1)
872 var nit_array = intent.double_array_extra(name.to_java_string)
873 sys.jni_env.pop_local_frame
877 # Retrieves the `Float` extra stored as Java `double
` with the corresponding
879 fun extra_double(name: String, def_value: Float): Float
881 sys.jni_env.push_local_frame(1)
882 var nit_float = intent.double_extra(name.to_java_string, def_value)
883 sys.jni_env.pop_local_frame
887 # Retrieves the `Array[Float]` extra stored as Java `float
[]` with the
889 fun extra_float_array(name: String): Array[Float]
891 sys.jni_env.push_local_frame(1)
892 var nit_array = intent.float_array_extra(name.to_java_string)
893 sys.jni_env.pop_local_frame
897 # Retrieves the `Float` extra stored as Java `float
` with the corresponding
899 fun extra_float(name: String, def_value: Float): Float
901 sys.jni_env.push_local_frame(1)
902 var nit_float = intent.float_extra(name.to_java_string, def_value)
903 sys.jni_env.pop_local_frame
907 # Retrieves the `Array[Int]` extra stored as Java `int
[]` with the
909 fun extra_int_array(name: String): Array[Int]
911 sys.jni_env.push_local_frame(1)
912 var nit_array = intent.int_array_extra(name.to_java_string)
913 sys.jni_env.pop_local_frame
917 # Retrieves the `Int` extra stored as Java `int
` with the corresponding
919 fun extra_int(name: String, def_value: Int): Int
921 sys.jni_env.push_local_frame(1)
922 var nit_int = intent.int_extra(name.to_java_string, def_value)
923 sys.jni_env.pop_local_frame
927 # Retrieves the `Array[Int]` extra stored as Java `long
[]` with the
929 fun extra_long_array(name: String): Array[Int]
931 sys.jni_env.push_local_frame(1)
932 var nit_array = intent.long_array_extra(name.to_java_string)
933 sys.jni_env.pop_local_frame
937 # Retrieves the `Int` extra stored as Java `long
` with the corresponding
939 fun extra_long(name: String, def_value: Int): Int
941 sys.jni_env.push_local_frame(1)
942 var nit_int = intent.long_extra(name.to_java_string, def_value)
943 sys.jni_env.pop_local_frame
947 # Retrieves the `Array[Int]` extra stored as Java `short
[]` with the
949 fun extra_short_array(name: String): Array[Int]
951 sys.jni_env.push_local_frame(1)
952 var nit_array = intent.short_array_extra(name.to_java_string)
953 sys.jni_env.pop_local_frame
957 # Retrieves the `Int` extra stored as Java `short
` with the corresponding
959 fun extra_short(name: String, def_value: Int): Int
961 sys.jni_env.push_local_frame(1)
962 var nit_int = intent.short_extra(name.to_java_string, def_value)
963 sys.jni_env.pop_local_frame
967 # Retrieves the `Array[String]` extra stored as Java `String[]` with the
969 fun extra_string_array(name: String): Array[String]
971 sys.jni_env.push_local_frame(1)
972 var string_array = intent.string_array_extra(name.to_java_string)
973 sys.jni_env.pop_local_frame
977 # Retrieves the `Array[String]` extra stored as Java `ArrayList<String>`
978 # with the corresponding name
979 fun extra_string_array_list(name: String): Array[String]
981 sys.jni_env.push_local_frame(1)
982 var string_array = intent.string_array_list_extra(name.to_java_string)
983 sys.jni_env.pop_local_frame
987 # Retrieves the `String` extra stored as Java `String` with the corresponding
989 fun extra_string(name: String): String
991 sys.jni_env.push_local_frame(1)
992 var nit_java_string = intent.string_extra(name.to_java_string).to_s
993 sys.jni_env.pop_local_frame
994 return nit_java_string
997 # Adds extra data corresponding to `double
` java type
998 # Returns `self` allowing fluent programming
999 fun add_extra_double(name: String, value: Float): Intent
1001 sys.jni_env.push_local_frame(1)
1002 intent.add_extra_double(name.to_java_string, value)
1003 sys.jni_env.pop_local_frame
1007 # Adds extra data corresponding to `double
[]` java type
1008 # Returns `self` allowing fluent programming
1009 fun add_extra_array_of_double(name: String, value: Array[Float]): Intent
1011 sys.jni_env.push_local_frame(1)
1012 intent.add_extra_array_of_double(name.to_java_string, value)
1013 sys.jni_env.pop_local_frame
1017 # Adds extra data corresponding to `char
` java type
1018 # Returns `self` allowing fluent programming
1019 # FIXME: Java's `char
` are encoded on 16-bits whereas Nit's are on 8-bits.
1020 fun add_extra_char(name: String, value: Char): Intent
1022 sys.jni_env.push_local_frame(1)
1023 intent.add_extra_char(name.to_java_string, value)
1024 sys.jni_env.pop_local_frame
1028 # Adds extra data corresponding to `char
[]` java type
1029 # Returns `self` allowing fluent programming
1030 # FIXME: Java's `char
` are encoded on 16-bits whereas Nit's are on 8-bits.
1031 fun add_extra_array_of_char(name: String, value: Array[Char]): Intent
1033 sys.jni_env.push_local_frame(1)
1034 intent.add_extra_array_of_char(name.to_java_string, value)
1035 sys.jni_env.pop_local_frame
1039 # Adds extra data corresponding to `CharSequence` java type
1040 # Returns `self` allowing fluent programming
1041 fun add_extra_char_sequence(name: String, value: String): Intent
1043 sys.jni_env.push_local_frame(2)
1044 intent.add_extra_char_sequence(name.to_java_string, value.to_java_string)
1045 sys.jni_env.pop_local_frame
1049 # Adds extra data corresponding to `CharSequence[]` java type
1050 # Returns `self` allowing fluent programming
1051 fun add_extra_array_of_char_sequence(name: String, value: Array[String]): Intent
1053 sys.jni_env.push_local_frame(value.length + 1)
1054 var java_string_array = new Array[JavaString]
1055 for element in value do
1056 java_string_array.push(element.to_java_string)
1058 intent.add_extra_array_of_char_sequence(name.to_java_string, java_string_array)
1059 sys.jni_env.pop_local_frame
1063 # Adds extra data corresponding to `bundle
` java type
1064 # Returns `self` allowing fluent programming
1065 fun add_extra_bundle(name: String, value: NativeBundle): Intent
1067 sys.jni_env.push_local_frame(1)
1068 intent.add_extra_bundle(name.to_java_string, value)
1069 sys.jni_env.pop_local_frame
1073 # Adds extra data corresponding to `int
` java type
1074 # Returns `self` allowing fluent programming
1075 # *Be aware of possible integer overflow as Nit `Int` corresponds to*
1076 # *java `long
` and the expected value is a java `int
`*
1077 # Consider using add_extra_long instead
1078 fun add_extra_int(name: String, value: Int): Intent
1080 sys.jni_env.push_local_frame(1)
1081 intent.add_extra_int(name.to_java_string, value)
1082 sys.jni_env.pop_local_frame
1086 # Adds extra data corresponding to `int
[]` java type
1087 # Returns `self` allowing fluent programming
1088 # *Be aware of possible integer overflow as Nit `Int` corresponds to*
1089 # *java `long
` and the expected value is a java `int
[]`*
1090 # Consider using add_extra_array_of_long instead
1091 fun add_extra_array_of_int(name: String, value: Array[Int]): Intent
1093 sys.jni_env.push_local_frame(1)
1094 intent.add_extra_array_of_int(name.to_java_string, value)
1095 sys.jni_env.pop_local_frame
1099 # Adds extra data corresponding to `ArrayList<Integer>` java type
1100 # Returns `self` allowing fluent programming
1101 # *Be aware of possible integer overflow as Nit `Int` corresponds to*
1102 # *java `long
` and the expected value is a java `ArrayList<Integer>`*
1103 # Consider using add_extra_array_of_long instead
1104 fun add_extra_array_list_of_int(name: String, value: Array[Int]): Intent
1106 sys.jni_env.push_local_frame(1)
1107 intent.add_extra_array_list_of_int(name.to_java_string, value)
1108 sys.jni_env.pop_local_frame
1112 # Adds extra data corresponding to `byte
` java type
1113 # Returns `self` allowing fluent programming
1114 # *Be aware of possible integer overflow as Nit `Int` corresponds to*
1115 # *java `long
` and the expected value is a java `byte
`*
1116 # Consider using add_extra_array_of_long instead
1117 fun add_extra_byte(name: String, value: Int): Intent
1119 sys.jni_env.push_local_frame(1)
1120 intent.add_extra_byte(name.to_java_string, value)
1121 sys.jni_env.pop_local_frame
1125 # Adds extra data corresponding to `byte
[]` java type
1126 # Returns `self` allowing fluent programming
1127 # *Be aware of possible integer overflow as Nit `Int` corresponds to*
1128 # *java `long
` and the expected value is a java `byte
[]`*
1129 # Consider using add_extra_array_of_long instead
1130 fun add_extra_array_of_byte(name: String, value: Int): Intent
1132 sys.jni_env.push_local_frame(1)
1133 intent.add_extra_array_of_byte(name.to_java_string, value)
1134 sys.jni_env.pop_local_frame
1138 # Adds extra data corresponding to `long
` java type
1139 # Returns `self` allowing fluent programming
1140 fun add_extra_long(name: String, value: Int): Intent
1142 sys.jni_env.push_local_frame(1)
1143 intent.add_extra_long(name.to_java_string, value)
1144 sys.jni_env.pop_local_frame
1148 # Adds extra data corresponding to `long
[]` java type
1149 # Returns `self` allowing fluent programming
1150 fun add_extra_array_of_long(name: String, value: Array[Int]): Intent
1152 sys.jni_env.push_local_frame(1)
1153 intent.add_extra_array_of_long(name.to_java_string, value)
1154 sys.jni_env.pop_local_frame
1158 # Adds extra data corresponding to `float
` java type
1159 # Returns `self` allowing fluent programming
1160 # *Be aware of possible loss of precision as Nit `Float` corresponds to*
1161 # *java `double
` and the expected value is a java `float
`*
1162 # Consider using add_extra_double
1163 fun add_extra_float(name: String, value: Float): Intent
1165 sys.jni_env.push_local_frame(1)
1166 intent.add_extra_float(name.to_java_string, value)
1167 sys.jni_env.pop_local_frame
1171 # Adds extra data corresponding to `float
[]` java type
1172 # Returns `self` allowing fluent programming
1173 # *Be aware of possible loss of precision as Nit `Float` corresponds to*
1174 # *java `double
` and the expected value is a java `float
[]`*
1175 # Consider using add_extra_array_of_double
1176 fun add_extra_array_of_float(name: String, value: Array[Float]): Intent
1178 sys.jni_env.push_local_frame(1)
1179 intent.add_extra_array_of_float(name.to_java_string, value)
1180 sys.jni_env.pop_local_frame
1184 # Adds extra data corresponding to `String` java type
1185 # Returns `self` allowing fluent programming
1186 fun add_extra_string(name: String, value: String): Intent
1188 sys.jni_env.push_local_frame(2)
1189 intent.add_extra_string(name.to_java_string, value.to_java_string)
1190 sys.jni_env.pop_local_frame
1194 # Adds extra data corresponding to `String[]` java type
1195 # Returns `self` allowing fluent programming
1196 fun add_extra_array_of_string(name: String, value: Array[String]): Intent
1198 sys.jni_env.push_local_frame(value.length + 1)
1199 var java_string_array = new Array[JavaString]
1200 for element in value do
1201 java_string_array.push(element.to_java_string)
1203 intent.add_extra_array_of_string(name.to_java_string, java_string_array)
1204 sys.jni_env.pop_local_frame
1208 # Adds extra data corresponding to `ArrayList<String>` java type
1209 # Returns `self` allowing fluent programming
1210 fun add_extra_array_list_of_string(name: String, value: Array[String]): Intent
1212 sys.jni_env.push_local_frame(value.length + 1)
1213 var java_string_array = new Array[JavaString]
1214 for element in value do
1215 java_string_array.push(element.to_java_string)
1218 intent.add_extra_array_list_of_string(name.to_java_string, java_string_array)
1219 sys.jni_env.pop_local_frame
1223 # Adds extra data corresponding to `boolean
` java type
1224 # Returns `self` allowing fluent programming
1225 fun add_extra_bool(name: String, value: Bool): Intent
1227 sys.jni_env.push_local_frame(1)
1228 intent.add_extra_bool(name.to_java_string, value)
1229 sys.jni_env.pop_local_frame
1233 # Adds extra data corresponding to `boolean
[]` java type
1234 # Returns `self` allowing fluent programming
1235 fun add_extra_array_of_bool(name: String, value: Array[Bool]): Intent
1237 sys.jni_env.push_local_frame(1)
1238 intent.add_extra_array_of_bool(name.to_java_string, value)
1239 sys.jni_env.pop_local_frame
1243 # Adds extra data corresponding to `short
` java type
1244 # Returns `self` allowing fluent programming
1245 # *Be aware of possible integer overflow as Nit `Int` corresponds to*
1246 # *java `long
` and the expected value is a java `short
`*
1247 # Consider using add_extra_long instead
1248 fun add_extra_short(name: String, value: Int): Intent
1250 sys.jni_env.push_local_frame(1)
1251 intent.add_extra_short(name.to_java_string, value)
1252 sys.jni_env.pop_local_frame
1256 # Adds extra data corresponding to `short
[]` java type
1257 # Returns `self` allowing fluent programming
1258 # *Be aware of possible integer overflow as Nit `Int` corresponds to*
1259 # *java `long
` and the expected value is a java `short
[]`*
1260 # Consider using add_extra_array_of_long instead
1261 fun add_extra_array_of_short(name: String, value: Array[Int]): Intent
1263 sys.jni_env.push_local_frame(1)
1264 intent.add_extra_array_of_short(name.to_java_string, value)
1265 sys.jni_env.pop_local_frame
1269 # Store `value
` as a serialized Json string
1270 # java method according to value type
1271 # Returns `self` allowing fluent programming
1272 fun []=(name: String, value: nullable Serializable): Intent
1274 var serialized_string = new StringWriter
1275 var serializer = new JsonSerializer(serialized_string)
1276 serializer.serialize(value)
1278 add_extra_string(name, serialized_string.to_s)
1282 # Retrieve an `Object` stored via `[]=` function
1283 fun [](name: String): nullable Object
1285 var serialized_string = self.extra_string(name)
1286 if serialized_string == "" then return null
1288 var deserializer = new JsonDeserializer(serialized_string)
1289 return deserializer.deserialize
1292 # Specify the class to be launched by the intent
1293 fun set_class_name(package_name: String, class_name: String): Intent
1295 sys.jni_env.push_local_frame(2)
1296 intent.set_class_name(package_name.to_java_string, class_name.to_java_string)
1297 sys.jni_env.pop_local_frame
1301 # Deletes intent global reference
1302 fun destroy do self.intent.delete_global_ref
1304 # Returns a human readable representation of the intent
1305 redef fun to_s do return intent.to_native_s.to_s
1308 redef extern class NativeActivity
1309 private fun start_activity(intent: NativeIntent) in "Java" `{ self.startActivity(intent); `}
1310 private fun start_service
(intent
: NativeIntent) in "Java" `{ self.startService(intent); `}
1311 private fun stop_service(intent: NativeIntent) in "Java" `{ self.stopService(intent); `}
1314 # Allows user to get values with enum-like syntax : `intent_action.main`
1315 fun intent_action
: Action do return once
new Action
1316 # Allows user to get values with enum-like syntax : `intent_category.home`
1317 fun intent_category
: Category do return once
new Category
1318 # Allows user to get values with enum-like syntax : `intent_flag.activity_brought_to_front`
1319 fun intent_flag
: Flag do return once
new Flag
1321 private class StringCopyArray
1322 var collection
= new Array[String]
1323 fun add
(element
: JavaString) do collection
.add element
.to_s
1326 private class StringCopyHashSet
1327 var collection
= new HashSet[String]
1328 fun add
(element
: JavaString) do collection
.add element
.to_s
1333 # Execute the intent and launch the appropriate application
1334 fun start_activity
(intent
: Intent) do native_activity
.start_activity
(intent
.intent
)
1336 # Start a service that will be running until the `stop_service` call
1337 fun start_service
(intent
: Intent) do native_activity
.start_service
(intent
.intent
)
1340 fun stop_service
(intent
: Intent) do native_activity
.stop_service
(intent
.intent
)