標題解釋了所有...我有此代碼段在我的應用程序:撥打電話編程後,我的Android應用程序崩潰
String url = createTelUrl("3112007315");
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(url));
context.startActivity(intent);
它撥打電話,但一旦通話結束,我應用程序崩潰。一旦通話結束,我想回到我的應用程序,但我讀this post,似乎不可能。所以......反正至少暫停我的應用程序並在通話完成後恢復它。
編輯:
感謝我收到了兩個答案,我覺得我真的很接近我的目標。我已經做了一些你們建議的事情。但是,也許我沒有解釋應用程序的一些細節...我正在開發誰想成爲Millonarie遊戲,所以我需要實現調用(我不知道它是如何在美國或其他國家,但在這裏我們稱之爲「打電話給朋友」)。
無論如何...我已經做了太多的改變這個應用程序,現在它不會崩潰。但是,一旦被調用結束,我畫的UI畫布就不會顯示出來。
我有一個SurfaceView
持有用戶界面。對於SurfaceView
我創建,是爲了刷新UI線程...這基本上是線程做什麼:
@Override
public void run() {
Canvas c;
while (_run) {
c = null;
try {
c = _surfaceHolder.lockCanvas(null);
// Check if should wait
synchronized (_surfaceHolder) {
_panel.onDraw(c);
}
} finally {
// do this in a finally so that if an exception is thrown
// during the above, we don't leave the Surface in an
// inconsistent state
if (c != null) {
_surfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
但是,一旦通話結束,我收到了黑屏。表面在那裏(我知道它,因爲它仍然可以接收一些觸摸事件),但它沒有顯示任何東西。您考慮的另一件事是,我如何從SurfaceView
類啓動線程:
public void surfaceCreated(SurfaceHolder holder) {
hilo.setRunning(true);
try{
hilo.start();
}catch(IllegalThreadStateException ite){
Log.e("wwtbam", "god dammed");
}
}
這個工作不錯我纔開始實施的手機通話。這裏的問題是一旦調用結束並且它再次執行啓動方法,該方法會拋出一個IllegalThreadStateException
,因爲該線程已經啓動。我試着用一些'技術'在調用時暫停UI線程,但我一直無法解決這個問題。我試着做類似的事情:
// this in the UI thread class
if(haveToWait)
wait();
....
// this in the surface view class
if(callEnded)
hilo.notify();
但是沒有奏效。我也嘗試過使用sleep(50);
而不是wait();
等其他'技巧',但它也不起作用。
有了我提供的所有信息......你能向我推薦什麼?
謝謝...我編輯帖子,包括新的信息。 – Cristian 2010-05-09 04:14:03