问题描述
我对 Capacitor 的设备插件有疑问。使用 Device.getLanguageCode() 时,当我使用 ionic serve 测试浏览器中的应用程序时,我得到了正确的语言代码。但是,当我使用 android studio 在自己的手机上测试应用程序时,没有检索到语言代码。我试图将语言代码打印到屏幕上,但没有任何结果。
我怀疑可能是因为该应用程序只是处于测试模式,但它仍然安装在手机上,所以它不应该能够获取设备信息吗?非常感谢帮助!
我正在使用 ionic 和 react。
代码:
/* --------------------- Setting Language --------------------- */
const { Device } = Plugins;
const languageCtx = useContext(LanguageContext);
let fixedLangCode = 0; // 0 is default language code (English).
Device.getLanguageCode().then((langCode) => {
if (langCode.value.includes("NO")) {
fixedLangCode = 1; //1 is norwegian language code.
}
languageCtx.updateLanguageCode(fixedLangCode);
});
/* ---------------------------------------------------------- */
错误信息: 似乎没有任何错误消息。启动应用程序时唯一提到的关于 getLanguageCode 的内容是:
V/Capacitor/Plugin: To native (Capacitor plugin): callbackId: 27212778,pluginId: Device,methodName: getLanguageCode
V/Capacitor: callback: 27212778,methodName: getLanguageCode,methodData: {}
D/Capacitor: Registering plugin: Device
解决方法
我找到了问题和解决方案。结果没有问题,只是浏览器和手机上的 getLanguageCode.value 结果不同。
在浏览器中,getLanguageCode.value 返回“nb-NO”。
在移动应用程序中,getLanguageCode.value 返回“nb”。
由于我的程序旨在检测“NO”而不是“nb”,因此它似乎不起作用。