2013-09-28 6 views
13

मैंने एक ऐसा एप्लीकेशन लिखा है जो यूएसएसडी कोड का उपयोग करता है। मैं एक यूएसएसडी के लिए एक अनुरोध भेजना चाहता हूं लेकिन मुझे नहीं पता कि डेटा कैसे प्राप्त करें और इसे स्ट्रिंग में कैसे सहेजें।एंड्रॉइड से यूएसएसडी कोड से प्रतिक्रिया कैसे प्राप्त करें?

नमूना कोड:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button btn = (Button) findViewById(R.id.button1); 

    btn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      String encodedHash = Uri.encode("#"); 
      String ussd = "*141*1" + encodedHash; 
      startActivityForResult(new Intent("android.intent.action.CALL", 
        Uri.parse("tel:" + ussd)), 1); 

     } 
    }); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 

    Toast.makeText(getApplicationContext(), 
      "USSD: " + requestCode + " " + resultCode + " ", 1).show(); 

    if (requestCode == 1) { 

     if (resultCode == RESULT_OK) { 
      // String result=data.getStringExtra("result"); 
      String dd = data.toString(); 
      Toast.makeText(getApplicationContext(), dd, 1).show(); 
     } 

    } 

स्क्रीनशॉट आवेदन: enter image description here

enter image description here

कैसे मेरे समस्या को हल करने?

+0

क्या आपको अपनी समस्या का समाधान करने का तरीका मिला है? ! – gkiko

+0

नहीं, मैं ऐसा नहीं ...... –

+0

https://code.google.com/p/android/issues/detail?id=57120#c14 – gkiko

उत्तर

2

एक कस्टम गतिविधि से यूएसएसडी कोड डायल करना सीधे डायल या कॉल इरादे का उपयोग कर आगे बढ़ता है, लेकिन लौटा हुआ परिणाम सुनना एंड्रॉइड के कारण प्लेटफ़ॉर्म के भीतर यूएसएसडी कॉल को रोकने के लिए उचित समर्थन नहीं है, लेकिन आंशिक हालांकि अनियंत्रित समर्थन मूल डायलर आवेदन के भीतर मौजूद है।

एक शुरुआत के रूप में, Android स्रोत कोड में PhoneUtils वर्ग को देखो। लिंक 4.0.3 के लिए है, लेकिन मेरा मानना ​​है कि यह आंशिक समर्थन 2.3 के बाद से मौजूद है।

विशेष रूप से, लाइन 217 पर देख रहे हैं, नाम "com.android.ussd.IExtendedNetworkService" के साथ एक आशय बना जा रहा है। तो आपको जो करना है वह अपनी खुद की सेवा को लागू करना है जो उस इरादे का जवाब देता है। सेवा को IExtendedNetworkService.aidl के अनुसार कार्यान्वित करने की आवश्यकता है जो एंड्रॉइड फ्रेमवर्क का हिस्सा है।

AIDL कई कार्य को उजागर करता है, लेकिन एक हम के बारे में परवाह है कि सेवा में getUserMessage (पाठ) कार्य है। पाठ यूएसएसडी कॉल से लौटा अंतिम मूल्य है।

नोट्स:

  • के बाद से सेवा PhoneUtils द्वारा पर आबद्ध है, तो आप फोन बूट अप पर सेवा शुरू करने के लिए की जरूरत है। इसका मतलब यह भी है कि सेवा में किसी भी संशोधन के लिए फोन रीबूट की आवश्यकता होगी।
  • getUserMessage से अशक्त रिटर्निंग यूएसएसडी परिणाम दिखाए जाने से डायलर को दबाने जाएगा, लेकिन कोई रास्ता नहीं पूरी तरह से डायलर छिपाने के लिए है।
  • कॉल प्रगति पर दिखाए गए पाठ को बदलने के लिए आप अन्य कार्यों का भी उपयोग कर सकते हैं।
  • यह यूएसएसडी संकेतों (मेनू), केवल अंतिम परिणाम पर पर काम करने लगता है।

चेकआउट GitHub here पर एक उदाहरण कोड।

+0

से प्रतिक्रिया प्रबंधित नहीं कर सकते हैं क्या आप इस प्रश्न का उत्तर देने वाले कुछ प्रासंगिक कोड पोस्ट कर सकते हैं? स्रोत संदर्भों के साथ साइट पर अंतिम उत्तर होना एक अच्छा विचार है, क्योंकि प्रोग्रामिंग प्रश्नों के लिए SO को "एंड-ऑल" बनाता है। –

+1

मैंने पहले से ही एक जिथब रिपोजिटरी के लिंक को जोड़ा है जिसमें प्रासंगिक कोड की आवश्यकता है, इसकी काफी आवश्यकता है। यह बेहतर होगा कि आप भंडार की जांच करें। कोड देखने के लिए [यहां] (https://github.com/alaasalman/ussdinterceptor) पर क्लिक करें। – Gondy

+0

@ गोंडी क्या आप एक कामकाजी उदाहरण परियोजना बना सकते हैं जो आपके यूएसएसडी इंटरसेप्टर का उपयोग करे?मुझे एक समस्या है जो मेरी जावा क्लास – HendraWD

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