Skip to content

Instantly share code, notes, and snippets.

@cbaggers
Last active February 27, 2017 13:56
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save cbaggers/489e2533570f246e32157e0018cab95c to your computer and use it in GitHub Desktop.
Activity Callbacks
{
"RootNamespace":"",
"Packages": [
"Fuse",
"FuseJS",
"Android.ActivityUtils",
],
"Includes": [
"*"
],
}
<App>
<Button Text="Play" Clicked="ClickPlay" />
</App>
using Uno;
using Uno.Graphics;
using Uno.Platform;
using Uno.Collections;
using Fuse;
using Fuse.Controls;
using Fuse.Triggers;
using Fuse.Resources;
using Android;
using Uno.Compiler.ExportTargetInterop;
[ForeignInclude(Language.Java,
"android.app.Activity",
"android.content.Intent",
"android.net.Uri",
"android.os.Bundle",
"android.provider.MediaStore",
"java.io.File")]
public partial class MainView
{
void ClickPlay(object a1, EventArgs a2)
{
var intent = makeMyIntent();
if (intent!=null)
{
ActivityUtils.StartActivity(intent, OnResult);
} else {
debug_log "Didnt make intent. boooo";
}
}
//--------------------------------------------------
extern(android) void OnResult(int resultCode, Java.Object intent, object info)
{
debug_log "\nblam!: "+resultCode+" - "+intent + "\n";
}
[Foreign(Language.Java)]
static extern(android) Java.Object makeMyIntent()
@{
try {
String fileName = "JPEG_TEST";
String ext = ".jpg";
File storageDir = com.fuse.Activity.getRootActivity().getExternalFilesDir(null);
File photoFile = File.createTempFile(fileName, ext, storageDir);
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Bundle bdl = new Bundle();
bdl.putParcelable(MediaStore.EXTRA_OUTPUT, Uri.fromFile((File)photoFile));
takePictureIntent.putExtras(bdl);
return takePictureIntent;
} catch (Exception ex) {
return null;
}
@}
//--------------------------------------------------
extern(!android) void OnResult(int resultCode, object intent)
{
}
static extern(!android) object makeMyIntent()
{
return null;
}
}
@cbaggers
Copy link
Author

The important methods in the ActivityUtils class are

public static Java.Object GetRootActivity() {..}

public static void StartActivity(Java.Object _intent)
public static void StartActivity(Java.Object intent, ActivityResultCallback callback)

where ActivityResultCallback is defined as

public extern(android) delegate void ActivityResultCallback(int resultCode, Java.Object intent, object info);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment