환경에 뭔가가 필요합니다.
DLLImport
externs는 기본 공유 라이브러리 (.so
) 및 사용 권한 문제, API 차이 등이 없으면 사용할 수 없습니다.
존재하는 OS 파일은 모래 상자 때문에 번거로울 수 있으므로 File.Exists
은 피해야합니다.
하지만 안드로이드는 어떤 사용자 (루트가 아닌 사용자)도 사용할 수있는 cmd getprop
을 가지고 있으며 항상 셸 경로에 있으므로 실행되어 Android에있는 값을 반환합니다. 저렴한하지만
이
public static class AndroidTest
{
static bool? isAndroid;
public static bool Check()
{
if (isAndroid != null) return (bool)isAndroid;
using (var process = new System.Diagnostics.Process())
{
process.StartInfo.FileName = "getprop";
process.StartInfo.Arguments = "ro.build.user";
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
try
{
process.Start();
var output = process.StandardOutput.ReadToEnd();
isAndroid = string.IsNullOrEmpty(output) ? (bool?)false : (bool?)true;
}
catch
{
isAndroid = false;
}
return (bool)isAndroid;
}
}
}
주 ... 작동 : 물론 누군가가 getprop
cmd를이, 또는 기타 환경 검사을 속일 반환 값을 스푸핑 할 수 있지만, 당신은 안드로이드 기본에 액세스 할 수없는 한 API를 사용하고 100 % 휴대용 상태를 유지하고자하는 욕구가 있다면 주위에 방법이 보이지 않습니다 ...