From 6e6247335efea7eda168434b32e1183952de295a Mon Sep 17 00:00:00 2001 From: Nathanael Anderson Date: Wed, 16 Mar 2016 21:45:31 -0600 Subject: [PATCH] Add RequestPermission to become an Application activity callback like BackPress. (Patch 2/2) --- application/application.android.ts | 1 + application/application.d.ts | 25 +++++++++++++++++++++++++ ui/frame/frame.android.ts | 13 +++++++++++++ 3 files changed, 39 insertions(+) diff --git a/application/application.android.ts b/application/application.android.ts index a894e711d..864aa6bfc 100644 --- a/application/application.android.ts +++ b/application/application.android.ts @@ -162,6 +162,7 @@ export class AndroidApplication extends observable.Observable implements definit public static saveActivityStateEvent = "saveActivityState"; public static activityResultEvent = "activityResult"; public static activityBackPressedEvent = "activityBackPressed"; + public static activityRequestPermissionsEvent = "activityRequestPermissions"; public paused: boolean; public nativeApp: android.app.Application; diff --git a/application/application.d.ts b/application/application.d.ts index c720bacb1..2c646f139 100644 --- a/application/application.d.ts +++ b/application/application.d.ts @@ -278,6 +278,26 @@ declare module "application" { bundle: any /* android.os.Bundle */; } + /** + * Data for the Android activity onRequestPermissions callback + */ + export interface AndroidActivityRequestPermissionsEventData extends AndroidActivityEventData { + /** + * The request code. + */ + requestCode: number, + + /** + * The Permissions + */ + permissions: Array, + + /** + * The Granted. + */ + grantResults: Array + } + /** * Data for the Android activity result event. */ @@ -440,6 +460,11 @@ declare module "application" { */ on(event: "activityBackPressed", callback: (args: AndroidActivityBackPressedEventData) => void, thisArg?: any); + /** + * This event is raised on the back button is pressed in an android application. + */ + on(event: "activityRequestPermissions", callback: (args: AndroidActivityBackPressedEventData) => void, thisArg?: any); + /** * String value used when hooking to activityCreated event. */ diff --git a/ui/frame/frame.android.ts b/ui/frame/frame.android.ts index 255f1bb73..d53b15f7b 100644 --- a/ui/frame/frame.android.ts +++ b/ui/frame/frame.android.ts @@ -803,6 +803,19 @@ class NativeScriptActivity extends android.app.Activity { } } + public onRequestPermissionsResult (requestCode: number, permissions: Array, grantResults: Array): void { + trace.write("NativeScriptActivity.onRequestPermissionsResult;", trace.categories.NativeLifecycle); + + application.android.notify({ + eventName: "activityRequestPermissions", + object: application.android, + activity: this, + requestCode: requestCode, + permissions: permissions, + grantResults: grantResults + }); + } + protected onActivityResult(requestCode: number, resultCode: number, data: android.content.Intent): void { super.onActivityResult(requestCode, resultCode, data); trace.write(`NativeScriptActivity.onActivityResult(${requestCode}, ${resultCode}, ${data})`, trace.categories.NativeLifecycle);