The open source OpenXR runtime
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

add getPackageName() for Context, add getSignature() for PackageInfo

authored by

zhislv and committed by
Rylie Pavlik
0387e8f1 39fb50bf

+95 -1
+2
src/external/android-jni-wrap/wrap/android.content.cpp
··· 12 12 WINDOW_SERVICE(classRef(), "WINDOW_SERVICE"), 13 13 getPackageManager(classRef().getMethod( 14 14 "getPackageManager", "()Landroid/content/pm/PackageManager;")), 15 + getPackageName(classRef().getMethod( 16 + "getPackageName", "()Ljava/lang/String;")), 15 17 getContentResolver(classRef().getMethod( 16 18 "getContentResolver", "()Landroid/content/ContentResolver;")), 17 19 getApplicationContext(classRef().getMethod(
+12
src/external/android-jni-wrap/wrap/android.content.h
··· 93 93 pm::PackageManager getPackageManager(); 94 94 95 95 /*! 96 + * Wrapper for the getPackageName method 97 + * 98 + * Java prototype: 99 + * `public abstract android.content.Context getPackageName();` 100 + * 101 + * JNI signature: ()Ljava/lang/String; 102 + * 103 + */ 104 + std::string getPackageName(); 105 + 106 + /*! 96 107 * Wrapper for the getContentResolver method 97 108 * 98 109 * Java prototype: ··· 207 218 impl::StaticFieldId<std::string> DISPLAY_SERVICE; 208 219 impl::StaticFieldId<std::string> WINDOW_SERVICE; 209 220 jni::method_t getPackageManager; 221 + jni::method_t getPackageName; 210 222 jni::method_t getContentResolver; 211 223 jni::method_t getApplicationContext; 212 224 jni::method_t getClassLoader;
+6
src/external/android-jni-wrap/wrap/android.content.impl.h
··· 36 36 object().call<jni::Object>(Meta::data().getPackageManager)); 37 37 } 38 38 39 + inline std::string Context::getPackageName() { 40 + assert(!isNull()); 41 + return std::string( 42 + object().call<std::string>(Meta::data().getPackageName)); 43 + } 44 + 39 45 inline ContentResolver Context::getContentResolver() const { 40 46 assert(!isNull()); 41 47 return ContentResolver(
+9 -1
src/external/android-jni-wrap/wrap/android.content.pm.cpp
··· 12 12 packageName(classRef(), "packageName") { 13 13 MetaBaseDroppable::dropClassRef(); 14 14 } 15 + Signature::Meta::Meta() 16 + : MetaBaseDroppable(Signature::getTypeName()), 17 + toCharsString(classRef().getMethod( 18 + "toCharsString", "()Ljava/lang/String;")) { 19 + MetaBaseDroppable::dropClassRef(); 20 + } 15 21 ComponentInfo::Meta::Meta() 16 22 : MetaBaseDroppable(ComponentInfo::getTypeName()), 17 23 applicationInfo(classRef(), "applicationInfo") { ··· 29 35 PackageInfo::Meta::Meta() 30 36 : MetaBaseDroppable(PackageInfo::getTypeName()), 31 37 applicationInfo(classRef(), "applicationInfo"), 32 - packageName(classRef(), "packageName") { 38 + packageName(classRef(), "packageName"), 39 + signaturesId(classRef().getField("signatures", 40 + "[Landroid/content/pm/Signature;")) { 33 41 MetaBaseDroppable::dropClassRef(); 34 42 } 35 43 ResolveInfo::Meta::Meta()
+53
src/external/android-jni-wrap/wrap/android.content.pm.h
··· 17 17 class ApplicationInfo; 18 18 class PackageInfo; 19 19 class ServiceInfo; 20 + class Signature; 20 21 } // namespace android::content::pm 21 22 22 23 namespace android::os { ··· 216 217 }; 217 218 218 219 /*! 220 + * Wrapper for android.content.pm.Signature objects. 221 + */ 222 + class Signature : public ObjectWrapperBase { 223 + public: 224 + using ObjectWrapperBase::ObjectWrapperBase; 225 + static constexpr const char *getTypeName() noexcept { 226 + return "android/content/pm/Signature"; 227 + } 228 + 229 + /*! 230 + * Wrapper for the toCharsString method 231 + * 232 + * Java prototype: 233 + * `public abstract android.content.pm.Signature toCharsString();` 234 + * 235 + * JNI signature: Ljava/lang/String; 236 + * 237 + */ 238 + std::string toCharsString() const; 239 + 240 + /*! 241 + * Class metadata 242 + */ 243 + struct Meta : public MetaBaseDroppable { 244 + jni::method_t toCharsString; 245 + 246 + /*! 247 + * Singleton accessor 248 + */ 249 + static Meta &data() { 250 + static Meta instance{}; 251 + return instance; 252 + } 253 + 254 + private: 255 + Meta(); 256 + }; 257 + }; 258 + 259 + /*! 219 260 * Wrapper for android.content.pm.PackageInfo objects. 220 261 */ 221 262 class PackageInfo : public ObjectWrapperBase { ··· 248 289 std::string getPackageName() const; 249 290 250 291 /*! 292 + * Getter for the packageName field value 293 + * 294 + * Java prototype: 295 + * `public android.content.pm.Signature signatures;` 296 + * 297 + * JNI signature: [Landroid/content/pm/Signature; 298 + * 299 + */ 300 + Signature getSignature() const; 301 + 302 + /*! 251 303 * Class metadata 252 304 */ 253 305 struct Meta : public MetaBaseDroppable { 254 306 impl::WrappedFieldId<ApplicationInfo> applicationInfo; 255 307 impl::FieldId<std::string> packageName; 308 + jni::field_t signaturesId; 256 309 257 310 /*! 258 311 * Singleton accessor
+13
src/external/android-jni-wrap/wrap/android.content.pm.impl.h
··· 51 51 return get(Meta::data().packageName, object()); 52 52 } 53 53 54 + inline std::string Signature::toCharsString() const { 55 + assert(!isNull()); 56 + return object().call<std::string>(Meta::data().toCharsString); 57 + } 58 + 59 + inline 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 + 54 67 inline ServiceInfo ResolveInfo::getServiceInfo() const { 55 68 assert(!isNull()); 56 69 return get(Meta::data().serviceInfo, object());