The open source OpenXR runtime
1// Copyright 2020-2023, Collabora, Ltd.
2// SPDX-License-Identifier: BSL-1.0
3// Author: Rylie Pavlik <rylie.pavlik@collabora.com>
4// Inline implementations: do not include on its own!
5
6#pragma once
7
8#include "android.content.h"
9#include "java.util.h"
10#include <string>
11
12namespace wrap {
13namespace android::content::pm {
14inline os::Bundle PackageItemInfo::getMetaData() const {
15 assert(!isNull());
16 return get(Meta::data().metaData, object());
17}
18
19inline std::string PackageItemInfo::getName() const {
20 assert(!isNull());
21 return get(Meta::data().name, object());
22}
23
24inline std::string PackageItemInfo::getPackageName() const {
25 assert(!isNull());
26 return get(Meta::data().packageName, object());
27}
28
29inline ApplicationInfo ComponentInfo::getApplicationInfo() const {
30 assert(!isNull());
31 return get(Meta::data().applicationInfo, object());
32}
33
34inline std::string ApplicationInfo::getNativeLibraryDir() const {
35 assert(!isNull());
36 return get(Meta::data().nativeLibraryDir, object());
37}
38
39inline std::string ApplicationInfo::getPublicSourceDir() const {
40 assert(!isNull());
41 return get(Meta::data().publicSourceDir, object());
42}
43
44inline ApplicationInfo PackageInfo::getApplicationInfo() const {
45 assert(!isNull());
46 return get(Meta::data().applicationInfo, object());
47}
48
49inline std::string PackageInfo::getPackageName() const {
50 assert(!isNull());
51 return get(Meta::data().packageName, object());
52}
53
54inline std::string Signature::toCharsString() const {
55 assert(!isNull());
56 return object().call<std::string>(Meta::data().toCharsString);
57}
58
59inline Signature PackageInfo::getSignature() const {
60 assert(!isNull());
61 jobject signatures_obj = jni::env()->GetObjectField(object().getHandle(), Meta::data().signaturesId);
62 jobjectArray signatures_array = reinterpret_cast<jobjectArray>(signatures_obj);
63 jobject signature_obj = jni::env()->GetObjectArrayElement(signatures_array, 0);
64 return Signature(signature_obj);
65}
66
67inline ServiceInfo ResolveInfo::getServiceInfo() const {
68 assert(!isNull());
69 return get(Meta::data().serviceInfo, object());
70}
71
72inline PackageInfo PackageManager::getPackageInfo(std::string const &name,
73 int32_t flags) {
74 assert(!isNull());
75 return PackageInfo(
76 object().call<jni::Object>(Meta::data().getPackageInfo, name, flags));
77}
78
79inline ApplicationInfo
80PackageManager::getApplicationInfo(std::string const &packageName,
81 int32_t flags) {
82 assert(!isNull());
83 return ApplicationInfo(object().call<jni::Object>(
84 Meta::data().getApplicationInfo, packageName, flags));
85}
86
87inline java::util::List
88PackageManager::queryIntentServices(Intent const &intent, int32_t flags) {
89 assert(!isNull());
90 return java::util::List(object().call<jni::Object>(
91 Meta::data().queryIntentServices, intent.object(), flags));
92}
93
94} // namespace android::content::pm
95} // namespace wrap