Класс PackageManager
поставляет метод getInstallerPackageName , который укажет вам имя пакета для любого установленного вами пакета. Боковые приложения не будут содержать значения.
EDIT: ответьте @mttmllns ' ответ ниже относительно магазина приложений Amazon.
Есть ли в JS приличный способ сделать это?
blockquote>Нет. И это не приличный способ.
Внешний интерфейс может взаимодействовать с сервером через HTTP или WebSockets.
Ни один из них не предоставляет никакого встроенного механизма для исследования файловой системы.
Вам необходим сервер для предоставления API (например, веб-службы), который предоставляет необходимую информацию.
Итак, отказавшись признать, что это невозможно, я разработал решение, которое работает и не требует API. Тем не менее, сервер не должен активно блокировать блокировку просмотра каталога Javascript. Другими словами, сервер не отключил индексирование, и в каталоге нет index.html или его эквивалента для перезаписи каких-либо попыток индексирования, а сервер не выполняет некоторую перезапись URL-адреса. Другими словами, это должно работать в любой серверной среде, которая не переписывает и не блокирует индексы.
Вот черновик (все еще глючит, нужно закончить):
var request = new XMLHttpRequest();
request.open('GET', '/my/directory/', true);
request.onload = function() {
if (request.status >= 200 && request.status < 400) {
// Success!
var resp = request.responseText;
}
};
request.send();
var directory_listing = resp;
var regexp = /\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i;
var match, files = [];
while ((match = regexp.exec(resp)) != null) {
files.push(match.index);
}
console.log(files);