문제

I'm writing an app that needs to distinguish between Android Stock ROM and other ROMs like SenseUI, etc.

How can I do that within my application?

Thanks.

도움이 되었습니까?

해결책

I found that querying ro.product.brand using getprop yields exactly what I needed.

/**
 * Returns the ROM manufacturer.
 *
 * @return The ROM manufacturer, or NULL if not found.
 */
public static String getROMManufacturer() {
    String line;
    BufferedReader input = null;
    try {
        Process p = Runtime.getRuntime().exec("getprop ro.product.brand");
        input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);
        line = input.readLine();
        input.close();
    }
    catch (IOException ex) {
        Log.e(TAG, "Unable to read sysprop ro.product.brand", ex);
        return null;
    }
    finally {
        if (input != null) {
            try {
                input.close();
            }
            catch (IOException e) {
                Log.e(TAG, "Exception while closing InputStream", e);
            }
        }
    }
    return line;
}

For stock ROMs the value we get back is google
For SenseUI for example, we will get back HTC

The above method will return the only google or HTC etc...

I hope it helped someone else as well.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top