Действительно ли возможно обнаружить, если пользователь получает доступ через браузер или приложение с помощью JavaScript?
Я разрабатываю гибридное приложение к нескольким ОС для мобильных устройств через веб-страницу и приложение PhoneGap, и цель была бы к:
Решение: Исправьте index.html в Cordova и добавьте cordova-platform="android"
к <html>
тег, так, чтобы атрибут cordova-платформы только присутствовал в сборке Cordova и отсутствующий в исходном index.html, используемом для сети за пределами Cordova.
Профессионалы: Не полагаются на агент пользователя, схему URL или cordova API. Не должен ожидать deviceready события. Может быть расширен различными способами, например, cordova-платформа =, "браузер" может быть включен или не для различения веб-приложение за пределами Cordova со сборкой браузерной платформы Cordova.
Слияние с config.xml
<platform name="android">
<hook src="scripts/patch-android-index.js" type="after_prepare" />
</platform>
Добавляют Примечания файла scripts/patch-android-index.js
module.exports = function(ctx) {
var fs = ctx.requireCordovaModule('fs');
var path = ctx.requireCordovaModule('path');
var platformRoot = path.join(ctx.opts.projectRoot, 'platforms/android');
var indexPath = platformRoot + '/app/src/main/assets/www/index.html';
var indexSource = fs.readFileSync(indexPath, 'utf-8');
indexSource = indexSource.replace('<html', '<html cordova-platform="android"');
fs.writeFileSync(indexPath, indexSource, 'utf-8');
}
: Поскольку кроме андроида, пути platforms/android
и /app/src/main/assets/www/index.html
должны быть скорректированы.
Приложение может проверить на cordova-платформу с [1 113]
if (! document.documentElement.getAttribute('cordova-platform')) {
// Not in Cordova
}
или
if (document.documentElement.getAttribute('cordova-platform') === 'android') {
// Cordova, Android
}