0
我已經設法編寫阻止傳入呼叫的代碼,但是它在不同的類中,並且我想在用戶在對話框上按下「是」時執行它。我如何調用onReceive()?我作爲參數傳遞了什麼意圖?如何調用onReceive()拒絕調用?
這裏的MainActivity的代碼 -
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
activateButton = (Button)findViewById(R.id.activate);
activateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DialogBox();
}
});
}
protected void DialogBox() {
box = new AlertDialog.Builder(this);
box.setTitle("Reject incoming calls?").
setMessage("On activation, your phone will reject all incoming calls").setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//BLOCK CALLS
}
}).setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
final AlertDialog alert = box.create();
alert.show();
}
這裏還有一個擴展的BroadcastReceiver類。 onReceive擁有拒絕該呼叫的代碼。
public class RejectCall extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
ITelephony telephonyService;
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
telephonyService = (ITelephony) m.invoke(tm);
Bundle bundle = intent.getExtras();
String phoneNumber = bundle.getString("incoming_number");
Log.d("INCOMING", phoneNumber);
if ((phoneNumber != null)) {
telephonyService.endCall();
Log.d("HANG UP", phoneNumber);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
而且,要執行的動作正因爲如此,我將有什麼權限AndroidManifest要申報嗎?
注 - 我已經經歷過類似的問題,但他們似乎都沒有調用onReceive(),因此問題。
謝謝!
謝謝,這回答了我的問題的一部分。但是如果你看到我的MainActivity類,我打開一個對話框,並且我想只在用戶在對話框中按下yes時才阻止呼叫。我會怎麼做?我不知何故需要縫合onRecieve()與用戶按是。 – Slay 2014-10-02 16:04:20