uni-app使用app获取本机号码和iccid
uni-app使用app获取本机号码和iccid
能否开发一个插件,能获取本机号码和iccid?
能获取到,但是获取的不全呀,里面包含字母的获取不全
只要是原生能干的活 就没有一个原生插件干不了的 微信:zhimitec
专业两端插件开发,Q 1196097915 不收预付款 满意在付款
在uni-app
中直接获取本机号码(MSISDN)和ICCID(集成电路卡识别码)是比较复杂且受限的操作,因为这些信息通常涉及到用户隐私和安全,多数操作系统和应用商店都有严格的规定来限制这类信息的获取。特别是在iOS平台上,获取这些信息几乎是不可能的,而在Android平台上,虽然理论上可以通过某些权限和API获取,但也受到系统版本和设备厂商的限制。
尽管如此,如果你确实需要在Android平台上尝试获取这些信息(请注意,这可能违反某些应用商店的政策),以下是一个基本的思路,但请注意,这并不能保证在所有设备上都能工作:
获取本机号码(MSISDN)
在Android上,获取本机号码通常需要READ_PHONE_STATE
权限,但现代Android版本(从Android 10开始)已经限制了对这一信息的访问。以下是一个尝试获取本机号码的示例代码,但很可能在现代设备上无法工作:
// manifest.json
{
"mp-weixin": {},
"app-plus": {
"distribute": {
"android": {
"permissions": [
"android.permission.READ_PHONE_STATE"
]
}
}
}
}
// 在你的页面中
if (uni.getSystemInfoSync().platform === 'android') {
plus.android.importClass('android.Manifest');
plus.android.requestPermissions([plus.android.constant.Manifest.permission.READ_PHONE_STATE], function(event) {
if (event.deniedAlways.length === 0) {
const TelephonyManager = plus.android.importClass('android.content.Context');
const tm = plus.android.runtimeMainActivity.getSystemService(TelephonyManager.TELEPHONY_SERVICE);
const lineNumber = tm.getLine1Number(); // 尝试获取本机号码
console.log('本机号码:', lineNumber);
} else {
console.error('权限被拒绝');
}
});
} else {
console.error('当前平台不支持获取本机号码');
}
获取ICCID
获取ICCID通常涉及到访问SIM卡信息,这在大多数现代Android设备上也是受限的。以下是一个理论上可能的代码示例,但同样,很可能无法在现代设备上工作:
if (uni.getSystemInfoSync().platform === 'android') {
const SubscriptionManager = plus.android.importClass('com.android.internal.telephony.SubscriptionManager');
const subInfo = SubscriptionManager.from(plus.android.runtimeMainActivity).getActiveSubscriptionInfo();
if (subInfo != null) {
const iccid = subInfo.getIccId(); // 尝试获取ICCID
console.log('ICCID:', iccid);
} else {
console.error('无法获取订阅信息');
}
} else {
console.error('当前平台不支持获取ICCID');
}
重要提示:上述代码可能无法在现代Android设备上运行,因为这些API和系统权限已经受到严格限制。在生产环境中,强烈建议不要依赖这些方法来获取用户隐私信息。