在我的應用程序需要生成一個警告或實物,詢問用戶確認之前傳出和傳入的電話和短信的東西呼入和呼出電話和短信的任何UI。我完成了NEW_OUTGOING_CALL
,我可以只爲Toast
a msg。是否有可能產生警報或之前的Android
回答
您可以使用ITelephone.aidl和發生的事件來聽電話的狀態。我正在幫助您處理電話呼叫(包括關於如何斷開它的簡短摘錄)。 SMS也以類似的方式發生。這將是最好的,如果你可以研究並找出它
import com.android.internal.telephony.ITelephony;
import android.os.IBinder;
import android.widget.Toast;
import android.telephony.TelephonyManager;
import android.telephony.PhoneStateListener;
public class CallMonitor
{
protected StateListener phoneStateListener;
//stops the service to monitor any call.
public void stopMonitor()
{
try
{
TelephonyManager telephonymanager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
telephonymanager.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
phoneStateListener=null;
Toast.makeText(this, "Call Monitoring Stopped", Toast.LENGTH_SHORT).show();
}
catch (Exception e)
{
}
}
public void startMonitor()
{
try
{
phoneStateListener = new StateListener();
TelephonyManager telephonymanager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
telephonymanager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
Toast.makeText(this, "Call Monitoring Started", Toast.LENGTH_SHORT).show();
}
catch (Exception e)
{
e.printStackTrace();
}
}
@Override
public IBinder onBind(Intent arg0)
{
return null;
}
class StateListener extends PhoneStateListener
{
@Override
public void onCallStateChanged(int state, String incomingNumber)
{
super.onCallStateChanged(state, incomingNumber);
switch(state)
{
case TelephonyManager.CALL_STATE_RINGING:
Context context = getApplicationContext();
try
{
TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
Class c = Class.forName(manager.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
ITelephony telephony = (ITelephony)m.invoke(manager);
telephony.endCall();
}
catch(Exception e)
{
Toast.makeText(context, "Error ending the call" + e.getMessage(), Toast.LENGTH_LONG).show();
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_IDLE:
break;
}
}
};
}
權限是
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
非常感謝你的幫助紀州..但它已經制定了更有效地利用廣播接收器.. – Kishore 2012-03-19 11:34:48
謝謝你讓我知道@Kishore,你能幫助我瞭解究竟是什麼讓你相信的廣播接收器的效率。在我的應用程序中,這段代碼讓手機響了1/4秒,然後處理它。你觀察到了什麼? – kishu27 2012-03-19 16:22:02
對不起延遲迴復...實際上BroadcaseReceiver的過程是執行操作之前的意圖將廣播相應的消息。因此,在執行操作之前觸發BroadcastReceiver ..因此,在振鈴之前,我可以處理呼叫。 – Kishore 2012-03-20 11:29:03
我以前沒有在這方面工作過,但我認爲,您可以使用PhoneStateListener接口..它將調用功能作爲手機狀態更改.... Telephony Manager也許也是有用的。
從我的身邊,希望幫助只是一種嘗試,
- 1. Android中是否可能實現遞歸警報或覆蓋自身的警報?
- 2. 是否有可能產生與OpenERP的動態列的報告?
- 3. 是否有可能產生具有FPDF
- 4. 是否有可能產生JSFManagedBean
- 5. 是否有Android API來刪除警報
- 6. 是否有可能獲得特定產品之後的產品?
- 7. 是否有可能直接擁有AWS RDS警報
- 8. 是否有可能創建每秒運行的報警?
- 9. 是否有可能生產獨立的haskell可執行文件
- 10. 是否有可能在預定後設置uilocalnotification警報主體
- 11. 是否有可能產生的原始文件從的WebPack
- 12. Android - 'cursor.close()'可能產生'java.lang.nullpointerexception'?
- 13. 如何處理警報點擊從UIWebview產生的警報。
- 14. 是否有可能與新的生產線在線
- 15. 是否有可能在SimGrid中產生大量的進程?
- 16. 是否有可能在Android
- 17. 是否有可能在android
- 18. 是否有可能在android
- 19. 是否有可能在android
- 20. Red5是否可以生產?
- 21. 重複OnConnected是否有可能在之前的OnDisconnected之前調用?
- 22. 是有可能使用「報警」功能的WP7
- 23. 是否有可能檢查與硒webdriver沒有隱含的等待警報?
- 24. 是否可以在javascript函數之外編寫警報消息?
- 25. 是否有可能使用Jasper Reports來生成LDAP報告
- 26. 是否有可能運行DOMContentLoaded之前的東西嗎?
- 27. 是否有可能爲生產用途編譯玉石模板?
- 28. 是否有可能在corona sdk中產生毛刺效應?
- 29. 是否有可能在生產規則中引用事實?
- 30. 是否有可能通過Rails Asset Pipeline強制生成資產?
解釋更多你想要做什麼,你做了什麼。一般的路徑是使用廣播接收器。但是當用戶有一些其他行動要快速完成時顯示自定義用戶界面通常是一個非常非常糟糕的主意。 – Snicolas 2012-03-15 10:03:26
我只是想讓用戶重新確認他是否真的想打電話給某些特定號碼(應用程序最初從用戶那裏獲取),並且我已經使用broadcastreceiver在打出的電話上打開我的應用程序,但我無法暫停呼叫過程......請幫助我。 – Kishore 2012-03-15 10:58:20