aschmied
aschmied

Reputation: 986

Replacement for `__system_property_get` in Android L NDK

As of the Android L NDK, __system_property_get is removed (https://groups.google.com/a/chromium.org/forum/#!topic/chromium-reviews/keQP6L9aVyU). Is there another API in the Android L NDK to access the same property values?

Upvotes: 10

Views: 8397

Answers (3)

Vincent Le Garrec
Vincent Le Garrec

Reputation: 476

You can use __system_property_read / __system_property_read_callback (__ANDROID_API__ >= 26). I couldn't find official doc about it but it's well documented in system_properties.h.

I know it's not for Android L but I think a more modern solution should be written.

#include <sys/system_properties.h>

const prop_info* pi = __system_property_find("persist.sys.locale");
std::string prop;  // Not local, it will be modified by the callback.
if (pi != nullptr) {
  __system_property_read_callback(
      pi,
      [](void* cookie, const char*, const char* value, unsigned int) {
        *prop = value;
      },
       &prop);
}

Upvotes: 4

jerryurenaa
jerryurenaa

Reputation: 4704

what about

androidVersion = system("getprop ro.build.version.release");

   printf("%s", androidVersion.c_str());

Upvotes: 0

aschmied
aschmied

Reputation: 986

I went with popen as detailed in the answer at https://stackoverflow.com/a/478960/2833126 to run getprop. Something like

std::string command = "getprop ro.product.model";
FILE* file = popen(command.c_str(), "r");
if (!file) {
    // error
}
// read the property value from file
pclose(file);

Upvotes: 9

Related Questions