Merge pull request #1782 from NathanaelA/Permissions_TNSCore

Adds Android 6.0+ Permissions to NativeScript
This commit is contained in:
Vladimir Enchev
2016-03-22 09:45:31 +02:00
3 changed files with 39 additions and 0 deletions

View File

@ -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;

View File

@ -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<String>,
/**
* The Granted.
*/
grantResults: Array<Number>
}
/**
* 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.
*/

View File

@ -804,6 +804,19 @@ class NativeScriptActivity extends android.app.Activity {
}
}
public onRequestPermissionsResult (requestCode: number, permissions: Array<String>, grantResults: Array<number>): void {
trace.write("NativeScriptActivity.onRequestPermissionsResult;", trace.categories.NativeLifecycle);
application.android.notify(<application.AndroidActivityRequestPermissionsEventData>{
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);