如何以编程方式获取运行我的Android应用程序的设备的电话号码?
我想知道如何从我的Android应用程序中获取设备/用户区域代码我知道有一个名为TelephonyManager的lib但我找不到国家/地区代码功能
为了使自己清楚:我有一个活动,要求用户输入他的电话号码,我想从设备(从他的运营商?)获取区号?如果我打开我的应用程序在纽约我会得到+212作为代码和文本框输入我自己的号码
我正在开发一个应用程序,其中我们需要的一件事是控制传出呼叫,至少能够从我们的应用程序中阻止它.
我尝试过使用Intent.ACTION_CALL现有的活动:
Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber));
startActivity(callIntent);
Run Code Online (Sandbox Code Playgroud)
但是通过API似乎不允许停止呼叫.
你能建议一些解决方法吗?
例如:在通话期间启用飞机模式?只是一个例子; 这个黑客对我不起作用.
我想检索来电的电话号码,并像http://blog.whitepages.com/2009/02/27/caller-id-by-whitepages-a-new-android-app-中的那样做.即,看跌期权-电话销售上的警报/
能不能请你帮忙,因为我找不到任何关于此的信息.我从哪里开始,如何掌握电话号码?
好的,目前我的代码如下所示.当我拨打电话时,CustomBroadcastReceiver捕获它并打印出日志消息.我可以从捆绑中检索电话号码.但!我不能让他的CustomPhoneStateListener工作.正如您所看到的,我已将customPhoneState侦听器注册到接收器,但日志消息永远不会从CustomPhoneStateListener类中打印出来.我在这里失踪了什么?我的想法是否正确?
<receiver android:name=".CustomBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="5" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Run Code Online (Sandbox Code Playgroud)
public class CustomPhoneStateListener extends PhoneStateListener {
private static final String TAG = "CustomPhoneStateListener";
public void onCallStateChange(int state, String incomingNumber){
Log.v(TAG, "WE ARE INSIDE!!!!!!!!!!!");
Log.v(TAG, incomingNumber);
switch(state){
case TelephonyManager.CALL_STATE_RINGING:
Log.d(TAG, "RINGING");
break;
}
}
Run Code Online (Sandbox Code Playgroud)
public class CustomBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "CustomBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) …Run Code Online (Sandbox Code Playgroud) 我想知道Android中的用户手机号码.我使用了这段代码,但我没有得到数字.
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String n = tm.getLine1Number();
Run Code Online (Sandbox Code Playgroud)
允许:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Run Code Online (Sandbox Code Playgroud)
是否必须在android手机中保存号码 settings --> about phone --> status --> myphone number
有什么想法吗?
我想知道我是否在打电话.
如果我正在通话,则启动服务(服务部分清除).我该怎么做呢?
在接听电话时我需要拨打电话......我不知道该怎么办?有帮助吗?
我放下手机,看起来我的接近传感器不再可靠.它一直返回近处.问题是,在通话期间显示屏关闭,我将无法使用数字键盘输入别针或会议另一个电话,甚至断开呼叫.我在辅助功能设置中找到了电源按钮断开连接选项并立即使用它.
我试图创建一个应用程序,试图在收到一个电话时获得一个完整的唤醒锁,希望它能保持显示.
创建一个广播接收器,当电话状态变为OFFHOOK时调用服务
该服务获得一个完整的唤醒锁,只有当手机状态为IDLE时才会释放它.
但是,接近传感器会关闭显示屏.我使用isHeld()方法来确保获取锁.我使用了PowerManager的isScreenOn()方法,即使在通话期间屏幕关闭时它也返回true.我试图在一个循环中每两秒获取一次唤醒锁进行测试,但显示器仍然不会出现.
我正在使用Nexus 5 Android版本4.4.4
任何人都可以建议超越接近传感器的行为吗?根要求的选项也没关系.
谢谢!
android telephony telephonymanager proximitysensor android-dialer
我看到一些SO帖子讨论了如何以程序方式结束电话,例如,这个.是的,人们专注于结果,但没有人真正解释它为什么起作用的原因?
我尝试了代码,效果很好.但是我想了解更多关于底下发生的事情的细节?为什么通过创建ITelephony.aidl,ITelephony我们的项目中暴露了android隐藏的内部接口?我们如何创建ITelephony.aidl和自动生成的java(/gen/ITelephony.java)链接到 android的ITelephony界面?是否只是因为名称匹配(包名和援助文件名)?
TelephonyManager tm = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
//Why does the android internal ITelephony interface is exposed after created the ITelephony.aidl?
com.android.internal.telephony.ITelephony telephonyService = (ITelephony) m.invoke(tm);
telephonyService.endCall();
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下方法获取电话:
private String getMyPhoneNumber() {
TelephonyManager mTelephonyMgr;
mTelephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
//String imsi = mTelephonyMgr.getSubscriberId();
String phnNo = mTelephonyMgr.getLine1Number();
if (phnNo == null) {
phnNo = getNoFromWatsApp();
}
return phnNo;
}
private String getNoFromWatsApp(){
AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccounts();
String phoneNumber = "";
for (Account ac : accounts) {
String acname = ac.name;
String actype = ac.type;
// Take your time to look at all available accounts
if(actype.equals("com.whatsapp")) {
phoneNumber = ac.name;
}
}
return phoneNumber;
}
Run Code Online (Sandbox Code Playgroud)
但每次我得到一个空电话号码.我甚至试图从WhatsApp获得电话号码,但它正在返回"WhatsApp"而不是电话号码.有没有其他方法可以解决这个问题?
android ×10
telephonymanager ×10
phone-number ×3
telephony ×2
aidl ×1
java ×1
performance ×1
sim-card ×1