2

我是一名开发人员,并试图在 Google Play 开发人员控制台中阻止特定型号的三星 Galaxy Note4,问题是我无法找到设备型号与他们在控制台中写入的内容之间的关联。

例如,我想从控制台获取的以下列表中 了解SM-N910C 的含义:在此处输入图像描述

任何想法如何做到这一点?手动或以编程方式...我认为它不是http://developer.android.com/reference/android/os/Build.html的一部分

4

1 回答 1

1

所以这对你来说无疑为时已晚,但我最近也有同样的问题,所以我决定研究一下,我已经制定了一个可行的理论。

我相信出现在 Google Play Developer Console 中的这两个字符串是 Android 系统属性。更人性化的一个是“ro.product.model”,另一个是“ro.product.device”。这种映射似乎有效,至少在我现在可用的设备上是有效的。如果有人发现这两个值与 Google 提供的不匹配,请对此发表评论!

以编程方式读取 Android 系统属性需要对本机代码进行 JNI 调用,如下所示:

package com.example;

class Native {
    // pass a String[2]
    public static native void readModelAndDevice(String[] _results);
}

-

#include <jni.h>
#include <sys/system_properties.h>

char model[256], device[256];

extern "C" JNIEXPORT void JNICALL com_example_Native_readModelAndDevice
(
    JNIEnv * _java, jclass _class, jobjectArray _array
)
{
    __system_property_get("ro.product.model", model);
    __system_property_get("ro.product.device", device);
    jstring jmodel = _java->NewStringUTF(model);
    jstring jdevice = _java->NewStringUTF(device);
    _java->SetObjectArrayElement(_array, 0, jmodel);
    _java->SetObjectArrayElement(_array, 1, jdevice);
    return;
}

任何从未在 Android Studio 中使用过 JNI 的人都应该在尝试此示例之前完成 JNI 教程。

于 2018-03-28T11:39:05.697 回答