我试图在具有双Sim(两者都有效)的Android 5.1设备中获取MCC和MNC号码(基本上我想要IMSI号码但这些也足够了).由于5.1支持双Sim,所以我使用了这样的Subscription管理器:
SubscriptionManager manager = SubscriptionManager.from(this);
List<SubscriptionInfo> sil = manager.getActiveSubscriptionInfoList();
if (sil != null) {
for (SubscriptionInfo subInfo : sil) {
Log.v("TestMain", "SubInfo:" + subInfo);
}
} else {
Log.v("TestMain", "SubInfo: list is null");
}
Run Code Online (Sandbox Code Playgroud)
得到了这个输出:
07-24 18:28:32.162 3844-3844/? V/TestMain? SubInfo:{id=1, mcc 405 mnc 803, iccId=89918030914128062059 simSlotIndex=0 displayName=Aircel Karnataka carrierName=Aircel — Aircel Karnataka nameSource=0}
07-24 18:28:32.162 3844-3844/? V/TestMain? SubInfo:{id=2, mcc 405 mnc 803, iccId=8991860044481968955 simSlotIndex=1 displayName=CARD 2 carrierName=Vodafone Karnataka nameSource=0}
Run Code Online (Sandbox Code Playgroud)
MCC(将与同一个国家/地区相同)注意到虽然运营商不同,但MNC是相同的.
当我关掉手机时,我在logcat中看到了这一行:
07-24 18:31:02.295 616-616/? V/KeyguardUpdateMonitor? SubInfo:{id=1, mcc 405 mnc …Run Code Online (Sandbox Code Playgroud) android android-source telephonymanager dual-sim android-5.1.1-lollipop
我刚刚进入Android开发阶段,并决定我对这个新领域的第一次征服将是掌握手机对来电的反应.
稍微用谷歌搜索引导我到http://www.compiletimeerror.com/2013/08/android-call-state-listener-example.html#.Vi3Ren4vfwM(所以我的代码与他/她的代码有着惊人的相似之处).
我的主要(也是唯一)活动如下所示:
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TelephonyManager TelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
TelephonyMgr.listen(new TeleListener(),
PhoneStateListener.LISTEN_CALL_STATE);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
class TeleListener extends PhoneStateListener {
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
// CALL_STATE_IDLE;
Log.d("MyLittleDebugger", "I'm …Run Code Online (Sandbox Code Playgroud) 我正在使用代码
TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
mPhoneNumber = tMgr.getLine1Number();
Run Code Online (Sandbox Code Playgroud)
在android中以编程方式获取手机.但这只适用于一张SIM卡.如果我通过插入其他SIM卡测试此代码,它是给予null.我试图找到解决方案.请帮我.我还包括了READ_PHONE_STATE许可Manifest.
我想要唯一识别SIM卡.有没有其他方法可以做到这一点.请告诉我.
我使用BroadcastReceiver拦截Android手机上的来电,如下所示
tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
Bundle bundle = intent.getExtras();
String number = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
Run Code Online (Sandbox Code Playgroud)
在"私人号码"的情况下,我在两个设备上进行了测试,它在HTC Wildfire上显示数字为-1,在Galaxy S上显示为-2.我检查过android.telephony.PhoneNumberUtils但它无法帮助我.
是否有功能或通用方法来检测Android手机上的私人号码?
我想根据我的选择修改下面的屏幕.
我不知道如何访问这个屏幕.

我也需要修改这个屏幕

请帮我这样做.
android popup broadcastreceiver android-layout telephonymanager
我正在开发一个Android应用程序,我将使用LVL库来检查谷歌播放许可证.
阅读LVL文档后,我已经读过我必须获取android.Settings.Secure.ANDROID_ID来混淆google play响应.
但我还读到,从TelephonyManager获得的ANDROID_ID有时对于不同的设备是相同的.
首先,它在2.2之前的Android版本("Froyo")上并非100%可靠.此外,在主要制造商的流行手机中至少有一个被广泛观察到的错误,其中每个实例都具有相同的ANDROID_ID
真的吗?
谢谢
我想获得手机号码设备.我使用了以下代码参考Alex Volovoy的 This Link
TelephonyManager tMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
Log.d("msg", "Phone : "+mPhoneNumber);
Run Code Online (Sandbox Code Playgroud)
Logcat中的OUTPUT:
02-01 17:22:45.472: D/msg(29102): Phone : null
Run Code Online (Sandbox Code Playgroud)
02-01 17:22:45.472: D/msg(29102): Phone :
Run Code Online (Sandbox Code Playgroud)
我也采取了许可,<uses-permission android:name="android.permission.READ_PHONE_STATE"/>在AndroidManifest.xml
所以我该怎么做?有错误吗?
在过去的几周里,我面临着Android中的电话管理器API的问题 - 基于监听器开始录制的呼入监听器以及结束呼叫停止录制(流程正常工作)
ISSUE
我现在面临的问题是,在一些手机,它正在所有的时间,但在一些手机,电话经理的广播听众停止后几个小时的工作.经过一些研究,我找到了一个使用唤醒锁来防止CPU睡眠的解决方案,我尝试了这个但是徒劳无功.
@Override
public void onReceive(Context context, Intent intent) {
//We listen to two intents. The new outgoing call only tells us of an
//outgoing call. We use it to get the number.
roPlantPrefs = RoPlantPrefs.getInstance(context);
databaseHelper = new DatabaseHelper(context);
//lastState = roPlantPrefs.getLastState();
if (roPlantPrefs.getLogin()) {
if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) {
savedNumber = intent.getExtras().getString("android.intent.extra.PHONE_NUMBER");
} else {
roPlantPrefs = RoPlantPrefs.getInstance(context);
// if (!roPlantPrefs.getIsOnCall()) {
String stateStr = intent.getExtras().getString(TelephonyManager.EXTRA_STATE);
String number = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
int state = 0;
if (stateStr.equals(TelephonyManager.EXTRA_STATE_IDLE)) …Run Code Online (Sandbox Code Playgroud) 我正在创建一个应用程序来拒绝来自特定号码的呼叫,甚至没有向呼叫者发送一个铃声.
我有一个代码,在部分响铃后拒绝来电.请不要再说这个问题了.我一直在搜索代码拒绝呼叫没有响铃很长时间仍然没有找到解决方案.请帮助我!
public void onReceive(Context context, Intent intent) {
Bundle b = intent.getExtras();
incommingNumber = b.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
for(int i=0;i<blockedNumbers.length;i++)
{
if(incommingNumber.equalsIgnoreCase(blockedNumbers[i]))
{
TelephonyManager telephony = (TelephonyManager)
context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Class c = Class.forName(telephony.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
telephonyService = (ITelephony) m.invoke(telephony);
telephonyService.silenceRinger();
telephonyService.endCall();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我用来拒绝来电的代码.但它拒绝一个戒指.
我正在将Android 6.0运行时权限应用到监听运营商数据连接状态更改的应用程序中.我首先尝试从清单中删除READ_PHONE_STATE以检查应用程序需要权限的位置.令我惊讶的是,应用程序根本没有崩溃.
在此之后,我尝试在两个6.0之前的设备上进行相同的安装,这些设备实际上已经崩溃了.对我来说,似乎Android 6.0不再需要许可.有什么方法可以证实吗?
下面的行是6.0之前设备崩溃的行:
tm(TelephonyManager).listen(this, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
Run Code Online (Sandbox Code Playgroud) android telephonymanager android-permissions phone-state-listener
android ×10
telephonymanager ×10
phone-call ×2
dual-sim ×1
popup ×1
sim-card ×1
telephony ×1
wakelock ×1