【问题标题】:Titanium - Android 6 permissionsTitanium - Android 6 权限
【发布时间】:2016-04-26 13:55:15
【问题描述】:

我尝试在 Android 6 上请求权限时出错。

我的功能是:

// check ACCESS_FINE_LOCATION permission
var location2Permission = "android.permission.ACCESS_FINE_LOCATION";
var hasLocation2Permission = Ti.Android.hasPermission(location2Permission);

if(!hasLocation2Permission){
    permissionsToRequest.push(location2Permission);
}

// request permission
Ti.Android.requestPermissions(permissionsToRequest, function(e) {
    if (e.success) {
        Ti.API.info("SUCCESS");
        callback();
    } else {
        Ti.API.info("ERROR: " + e.error);
    }
}); 

错误是:

Message: Uncaught TypeError: Object #<Android> has no method 'requestPermissions'

发生了什么事?因为在 Titanium Docs 中存在这个功能。我正在使用 Ti.SDK 5.1.2.GA

【问题讨论】:

  • 您要申请位置权限吗?
  • 我认为我的问题是在 Ti.SDK 5.1.2.GA 中还没有实现函数 requestPermissions...
  • 是的,您应该使用 Ti SDK 5.2.2 及更高版本。
  • 使用 Ti SDK 5.2.2 也不起作用。
  • 自带 Titanium SDK 5.4.0 !

标签: appcelerator-titanium titanium-android


【解决方案1】:
// The first argument is required on iOS and ignored on other platforms
var hasLocationPermissions = Ti.Geolocation.hasLocationPermissions(Ti.Geolocation.AUTHORIZATION_ALWAYS);
Ti.API.info('Ti.Geolocation.hasLocationPermissions', hasLocationPermissions);

if (hasLocationPermissions) {
    return alert('You already have permission.');
}

Ti.Geolocation.requestLocationPermissions(Ti.Geolocation.AUTHORIZATION_ALWAYS, function(e) {
    Ti.API.info('Ti.Geolocation.requestLocationPermissions', e);

    if (e.success) {

        // Instead, probably call the same method you call if hasLocationPermissions() is true
        alert('You granted permission.');

    } else if (OS_ANDROID) {
        alert('You denied permission for now, forever or the dialog did not show at all because it you denied forever before.');

    } else {

        // We already check AUTHORIZATION_DENIED earlier so we can be sure it was denied now and not before
        Ti.UI.createAlertDialog({
            title: 'You denied permission.',

            // We also end up here if the NSLocationAlwaysUsageDescription is missing from tiapp.xml in which case e.error will say so
            message: e.error
        }).show();
    }
});

更多信息您可以查看linkdocs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    相关资源
    最近更新 更多