代碼如下所示:如何在phonestatelistener中創建一個android alertdialog?
1)在清單文件中聲明新的活動。 (AndroidManifest.xml中):
<activity
android:name=".ConfirmDialog"
android:label="@string/app_name"
android:theme="@android:style/Theme.Dialog"
android:launchMode="singleTask"
android:screenOrientation="vertical">
</activity>
2)創建新的類延伸活性。 (公共類ConfirmDialog擴展活動)
private static final int DIALOG_YES_NO_MESSAGE = 1;
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_YES_NO_MESSAGE:
return new AlertDialog.Builder(ConfirmDialog.this)
.setIconAttribute(android.R.attr.alertDialogIcon)
.setTitle(R.string.app_name)
.setMessage(R.string.ask_confirm)
.setPositiveButton(R.string.ask_confirm_yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
finish();
}
})
.setNegativeButton(R.string.ask_confirm_no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
finish();
}
})
.create();
}
return null;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
showDialog(DIALOG_YES_NO_MESSAGE);
}
3)使用新創建的活動中phonestatelistener。 (公共類監聽器擴展PhoneStateListener)
public void onCallStateChanged(int state, String incomingNumber){
switch(state){
case TelephonyManager.CALL_STATE_OFFHOOK:
confirmCall();
break;
}
super.onCallStateChanged(state, incomingNumber);
}
private void confirmCall(){
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.example", "com.example.ConfirmDialog"));
mContext.startActivity(intent);
}
什麼是錯誤日誌輸出? – Eric
android.view.WindowManager $ BadTokenException:無法添加窗口 - 標記null不適用於應用程序 – Ludiaz
'mContext'可能爲null。沒有完整的日誌和代碼是不可能分辨的。 – Eric