【问题标题】:get sim serial number in codename one using android native code使用android本机代码获取代号一中的sim序列号
【发布时间】:2017-12-05 15:05:54
【问题描述】:

我想使用Android原生代码在代号一中获得sim serial number,下面是我的原生实现类,我还在构建提示中添加了权限,代码没有给出任何错误但返回null

    import com.codename1.impl.android.AndroidNativeUtil;
    import android.telephony.TelephonyManager;

    public class MyNativeImpl {

            public String simID() {
            TelephonyManager tMgr=(TelephonyManager) AndroidNativeUtil.getActivity().getSystemService("phone");        
            String SIMSerialNumber=tMgr.getSimSerialNumber();  
                 return SIMSerialNumber;
            }

             public boolean isSupported() {
                return true;
            }
    }

我已经添加了这段代码,

if(!AndroidNativeUtil.checkForPermission(Manifest.permission‌​.READ_PHONE_STATE, "This should be the description shown to the user...")){ your code here }

但出现类似

的错误

错误:包清单不存在 if(!AndroidNativeUtil.checkForPermission(Manifest.permission.READ_PHONE_STATE, “应用程序需要权限才能正常工作”)) ^ 注意:某些输入文件使用或覆盖已弃用的 API。注意:重新编译 使用 -Xlint:deprecation 了解详细信息。注意:一些输入文件使用 未经检查或不安全的操作。注意:使用 -Xlint:unchecked 重新编译 详情。 1 个错误

【问题讨论】:

    标签: android codenameone


    【解决方案1】:

    Fabricio Cabeca 不久前为此写了一个 library

    在 Codename Extensions Library 中搜索 Telephony(右键单击项目 -> Codename One -> CodenameOne Settings -> Extensions)。使用这个 cn1LIb。

    如果Android 6.0以下仍有问题,

    android.xpermissions=<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 添加到您的构建提示中。

    还要确保您没有在双卡设备上进行测试,因为这可能会出现问题。

    【讨论】:

    • 你能解释一下关于使用 cn1Llb 的更多信息吗?我已经读过了
    • 我已经添加了这个扩展
    • 如果您想将您的工作分配给外部组。为此,请使用 cn1lib 方法。可以说是模块化。
    • 你可以参考这个答案:stackoverflow.com/a/34628176/7652758
    • 答案是正确的,但您忽略了在 Android 6+ 的代码中请求电话权限,因此在较新的设备上会失败。见codenameone.com/manual/advanced-topics.html 你需要用if(!AndroidNativeUtil.checkForPermission(Manifest.permission.READ_PHONE_STATE, "This should be the description shown to the user...")){ your code here } 包裹电话
    【解决方案2】:

    我认为 sim 序列号和 sim 号是唯一的。你可以试试这个来获取 sim 序列号和获取 sim 号,不要忘记在清单文件中添加权限。

    TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    String getSimSerialNumber = telemamanger.getSimSerialNumber();
    String getSimNumber = telemamanger.getLine1Number();
    

    并将以下权限添加到您的 Androidmanifest.xml 文件中。

    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    

    【讨论】:

    • 请参考这个例子希望对你有帮助github.com/Pmovil/Telephony
    • 我检查了链接,但 Telephony 没有任何方法获取序列号
    猜你喜欢
    • 1970-01-01
    • 2022-08-24
    • 1970-01-01
    • 2014-05-09
    • 2013-04-26
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    相关资源
    最近更新 更多