1
经过长时间的搜索,我无法解决我的问题。关闭随机拨打电话的声音
在我的应用程序中,我想用白名单默默控制来电号码。
这是使用的代码,有时它是完美的,但不是每次都有效。 振铃模式已恢复,我可以控制它,当我推动上限或下限音量控制,但没有声音输出到设备。
手机响铃时是否可以更改铃声模式? 我的测试是在S3 4.3
感谢您的时间来帮助我。
public class CallReceiver extends BroadcastReceiver {
private static final String TAG = CallReceiver.class.getSimpleName();
private static final String EMERGENCY="112";
private ITelephony telephonyService;
private AudioManager maudio;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.PHONE_STATE")) {
AudioManager maudio=(AudioManager)context.getSystemService(context.AUDIO_SERVICE);
//backup audio setting before mute
Integer ringcheck=maudio.getRingerMode();
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
// Incoming call
//set mute before control allowed/denied
maudio.setRingerMode(0);
String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
if(!Control.AuthorizeSender(context,"in","CALL",incomingNumber,"Phone call."))
{
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.endCall();
} catch (Exception e) {
e.printStackTrace();
}
}
else
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//restore audio
if (ringcheck == 1)
maudio.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
else if (ringcheck == 2)
maudio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
} else if (state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
Log.d(TAG,"Offhook");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.CALL_PHONE" />
嗨,没有人有这个问题?谢谢 – spaceworld