2011-09-08 19 views
5

मेरे ऐप में मैं संपर्कों की एक सूची बनाए रखूंगा।एंड्रॉइड में प्रोग्राम को कॉल करने के लिए कैसे करें

सूची में संपर्कों से किसी भी कॉल को हटा दिया जाएगा। वे मिस्ड कॉल के तहत दिखाए जाएंगे लेकिन फोन रिंग नहीं करेगा।

+0

ContentObserver शब्द है, जहां अपने कर सकते हैं सबसे अच्छा अभ्यास –

+0

संभव डुप्लिकेट [एंड्रॉइड में कॉल कैसे अवरुद्ध करें] (http://stackoverflow.com/questions/1083527/how-to-block-calls-in-android) –

+0

'MODIFY_PHONE_STATE' [अनुमति केवल सिस्टम ऐप्स के लिए है] (http://stackoverflow.com/questions/4715250/how-to-grant-modify-phone-state-permission-for-apps-ran-on-gingerbread) (एंड्रॉइड 2.3 और ऊपर के लिए)। यदि आप केवल उस फोन के लिए ऐप का उपयोग करना चाहते हैं जिसके लिए आपके पास पहुंच है, तो आप [अपना ऐप सिस्टम ऐप बना सकते हैं] (http://projectmaxs.org/documentation/systemapp.html) – tchelidze

उत्तर

15

सबसे पहले इस इंटरफेस बनाने के लिए:

public interface ITelephony { 

     boolean endCall(); 

     void answerRingingCall(); 

     void silenceRinger(); 

    } 

तो इस वर्ग कि BroadcastReceiver

public class IncomingCallReceiver extends BroadcastReceiver { 
    private ITelephony telephonyService; 
    private String blacklistednumber = "+458664455"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
     try { 
     Class c = Class.forName(tm.getClass().getName()); 
     Method m = c.getDeclaredMethod("getITelephony"); 
     m.setAccessible(true); 
     ITelephony telephonyService = (ITelephony) m.invoke(tm); 
     Bundle bundle = intent.getExtras(); 
     String phoneNumber = bundle.getString("incoming_number"); 
     Log.e("INCOMING", phoneNumber); 
     if ((phoneNumber != null) && phoneNumber.equals(blacklistednumber)) { 
      telephonyService.silenceRinger(); 
      telephonyService.endCall(); 
      Log.e("HANG UP", phoneNumber); 
     } 

     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
} 

फैली यह केवल कि एकल फ़ोननंबर को अवरुद्ध कर देगा बनाएँ, लेकिन आप बात समझ।

अपने प्रकट जोड़ना इस में:

<receiver android:name=".IncomingCallReceiver"> 
    <intent-filter android:priority="999"> 
     <action android:name="android.intent.action.PHONE_STATE" /> 
    </intent-filter> 
</receiver> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 
<uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" /> 
+0

हाय मैंने ऐसा किया। लेकिन नोटिस हुआ। उस इंटरफ़ेस को कैसे बनाया जाए जिसका अर्थ है कि मेरा सामान्य इंटरफ़ेस या सहायता फ़ाइल – harish

+0

केवल सामान्य इंटरकाफ़ बनाएं। लेकिन आपको इसे पैकेज में रखने की आवश्यकता हो सकती है: com.android.internal.telephony कोशिश करें। –

+0

यहां तक ​​कि यह काम नहीं कर रहा है मुझे लगता है कि हमें सहायता फ़ाइल उत्पन्न करना है। लेकिन यह नहीं पता कि यह कैसे करें। – harish

2

here से ITelephony के वर्ग को डाउनलोड करें।

फिर एक पैकेज में डाल दिया com.android.internal.telephony. की (एक नए पैकेज बनाने के) इसके बाद उचित वर्ग के लिए और खारिज एक फोन का उपयोग endCall() विधि के लिए पैकेज आयात

संबंधित मुद्दे

 संबंधित मुद्दे