导航:首页 > 操作系统 > android代码挂断电话

android代码挂断电话

发布时间:2022-07-10 00:05:53

① 安卓手机如何设置电源键挂断电话

若使用vivo手机,可以进入设置--(应用与权限)--(系统应用设置)--电话--开启“按电源键挂断来电”,不支持通话中挂断电话。
温馨提示:开启后,来电时第一次按电源键,可将来电置为静音,第二次按电源键,可将来电挂断,没有此开关则代表不支持此功能。

android怎么实现自动接听和挂断电话功能

android 实现来电自动接听和自动挂断的方法:
第一步:准备应用环境需要的系统包和aidl文件。
(1)在应用中创建包:android.telephony
将android系统框架下的\framework\telephony\java\android\telephony目录中的NeighboringCellInfo.aidl文件复制到上面创建的包(android.telephony )中;
(2)在应用中创建包:com.android.internal.telephony
将android系统框架下的\framework\telephony\java\com\android\internal\telephony目录中的ITelephony.aidl文件复制到上面创建的包(com.android.internal.telephony )中。
第二步:创建一个获取ITelephony的方法
PhoneUtils.java
package com.zhouzijing.android.demo;

import java.lang.reflect.Method;
import com.android.internal.telephony.ITelephony;
import android.telephony.TelephonyManager;

public class PhoneUtils {
/**
* 根据传入的TelephonyManager来取得系统的ITelephony实例.
* @param telephony
* @return 系统的ITelephony实例
* @throws Exception
*/
public static ITelephony getITelephony(TelephonyManager telephony) throws Exception {
Method getITelephonyMethod = telephony.getClass().getDeclaredMethod("getITelephony");
getITelephonyMethod.setAccessible(true);//私有化函数也能使用
return (ITelephony)getITelephonyMethod.invoke(telephony);
}
}

第三步:创建电话广播拦截器
MyPhoneBroadcastReceiver.java
package com.zhouzijing.android.demo;

import com.android.internal.telephony.ITelephony;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.util.Log;

public class MyPhoneBroadcastReceiver extends BroadcastReceiver {

private final static String TAG = MyPhone.TAG;

@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i(TAG, "[Broadcast]"+action);

//呼入电话
if(action.equals(MyPhone.B_PHONE_STATE)){
Log.i(TAG, "[Broadcast]PHONE_STATE");
doReceivePhone(context,intent);
}
}

/**
* 处理电话广播.
* @param context
* @param intent
*/
public void doReceivePhone(Context context, Intent intent) {
String phoneNumber = intent.getStringExtra(
TelephonyManager.EXTRA_INCOMING_NUMBER);
TelephonyManager telephony = (TelephonyManager)context.getSystemService(
Context.TELEPHONY_SERVICE);
int state = telephony.getCallState();

switch(state){
case TelephonyManager.CALL_STATE_RINGING:
Log.i(TAG, "[Broadcast]等待接电话="+phoneNumber);
try {
ITelephony iTelephony = PhoneUtils.getITelephony(telephony);
iTelephony.answerRingingCall();//自动接通电话
//iTelephony.endCall();//自动挂断电话
} catch (Exception e) {
Log.e(TAG, "[Broadcast]Exception="+e.getMessage(), e);
}
break;
case TelephonyManager.CALL_STATE_IDLE:
Log.i(TAG, "[Broadcast]电话挂断="+phoneNumber);
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.i(TAG, "[Broadcast]通话中="+phoneNumber);
break;
}
}

}

第四部:注册电话广播拦截器
MyPhone.java
package com.zhouzijing.android.demo;

import android.app.Activity;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.View;

public class MyPhone extends Activity {
public final static String TAG = "MyPhone";

public final static String B_PHONE_STATE = TelephonyManager.ACTION_PHONE_STATE_CHANGED;

private MyPhoneBroadcastReceiver mBroadcastReceiver;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_phone);
}

//按钮1-注册广播
public void registerThis(View v) {
Log.i(TAG, "registerThis");
mBroadcastReceiver = new MyPhoneBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(B_PHONE_STATE);
intentFilter.setPriority(Integer.MAX_VALUE);
registerReceiver(mBroadcastReceiver, intentFilter);
}

//按钮2-撤销广播
public void unregisterThis(View v) {
Log.i(TAG, "unregisterThis");
unregisterReceiver(mBroadcastReceiver);
}

}

第5步:在AndroidManifest.xml配置权限
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE"/>

其中:
iTelephony.answerRingingCall();//自动接通电话
必须有权限 android.permission.MODIFY_PHONE_STATE
iTelephony.endCall();//自动挂断电话
必须有权限 android.permission.CALL_PHONE。

③ android中 我现在手机正在通话中 突然有电话打入 我想把前面通话中的电话挂断 接后面打入电话怎么实现啊

很简单啊,在屏幕最上方向下划,出现正在通话的选项,选择,然后挂掉,接现在的通话,就可以了

④ android如何挂断电话

用反射aidl调用系统@hide的方法,网上有相关代码

⑤ Android中提供了3种电话状态,但是好像没有给出电话的接通状态的判断,怎么判断拨打和接听电话是否接通

android源码里面是有以下状态的:
IDLE,//待机,没有连接
ACTIVE,//通话
HOLDING,//挂断通话
DIALING,//响铃
ALERTING,//提醒
INCOMING,//来电
WAITING,//等待接通
DISCONNECTED,//连接断开后
DISCONNECTING;//连接断开工程中

你要去看源码里面的

⑥ 安卓智能机为什么拨打电话就自己挂断了

安卓智能机拨打电话出现自己挂断现象的原因有以下几种可能:

1、手机信号不佳。通信双方中的一方位置处于信号盲区时就会产生因无信号导致手机自动挂断的情况,针对这类情况,需要到信息较强的地方去打接电话;

⑦ ITelephony.aidl 在android studio中的使用

aidl文件的包名必须和aidl目录下java的包名一致。

先看下你的ITelephony.aidl文件的包名是不是com.android.internal.telephony;


aidl文件放在aidl目录下, 和java目录同级


最后要手动的build ---- make这个mole 成功后, 才会生成Java文件,生成的文件位于build/generated/source/aidl那边, 你的工程目录里是看不到的, 不过可以使用了。

阅读全文

与android代码挂断电话相关的资料

热点内容
我的世界刀光服务器的地址 浏览:383
小米扫地机器人算法 浏览:977
漫画人体pdf 浏览:681
微信安卓都有什么版本 浏览:106
客户手里有程序怎么加密 浏览:671
遍历字符串python循环 浏览:860
磁盘加密之后可以重装系统吗 浏览:484
html输出php变量 浏览:215
黄金金箔折解压球 浏览:423
java正则表达式源码 浏览:471
win执行python脚本 浏览:307
怎么知道服务器型号 浏览:984
宜家电动窗帘下载什么app 浏览:129
程序员怎么变革 浏览:862
ins亚洲服务器地址 浏览:785
我们的孩子pdf 浏览:597
appstore软件怎么显示屏幕 浏览:12
2950服务器如何装系统 浏览:884
丰田花冠压缩比 浏览:501
我的世界如何买服务器 浏览:457