7

से नई गतिविधि शुरू करना मेरे पास एक एंड्रॉइड ऐप है जो एप्लिकेशन क्लास से ऑडियो चलाता है। मेरे पास मेरे एप्लिकेशन क्लास में एक फोनस्टेट लिस्टनर है जो फोन कॉल होने पर ऑडियो को रोक देता है।एंड्रॉइड: एप्लिकेशन क्लास

कॉल समाप्त होने पर मैं एक विशेष गतिविधि शुरू करना चाहता हूं, लेकिन मैं असमर्थ हूं। यहां मेरा कोड है:

public void getPhoneState(){ 

TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); 
PhoneStateListener phoneStateListener = new PhoneStateListener() { 
    @Override 
    public void onCallStateChanged(int state, String incomingNumber) { 

     if (state == TelephonyManager.CALL_STATE_RINGING) { 
      if(audio.isPlaying()) 
       audioPlayer.pause(); 

     } 
      else if(state == TelephonyManager.CALL_STATE_IDLE) { 

       audio.start(); 
       Intent missintent= new Intent(context,AudioActivity.class); 
       missintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       startActivity(missintent); 


     } 
      else if(state == TelephonyManager.CALL_STATE_OFFHOOK) { 

      if(audio.isPlaying()) 
      audioPlayer.pause(); 

     } 
     super.onCallStateChanged(state, incomingNumber); 


    } 
}; 

if(mgr != null) { 
    mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); 
} 
} 

public boolean handleAudio(String source, int id) { 

phoneState(); 
//Code for Playing Audio 
..... 
..... 
} 

अगर कोई मुझे दिखा सकता है कि सही तरीके से गतिविधि कैसे शुरू करें, तो मैं इसकी सराहना करता हूं।

धन्यवाद!

+0

के लिए लक्ष्य फ़िल्टर सेट सुनिश्चित करें, और डॉन में यह नहीं पता कि क्या आपको एप्लिकेशन क्लास से कोई गतिविधि शुरू करना है, क्योंकि आप हमेशा मेनिफेस्ट पर एंट्री क्लास सेट करते हैं, लेकिन आप इसे कर सकते हैं ... क्या आपने अपनी गतिविधि को मैनिफेस्ट में जोड़ा है? –

+0

मेरी गतिविधि को प्रकट में जोड़ा गया है। क्या एप्लिकेशन क्लास से कोई गतिविधि लॉन्च करना संभव नहीं है? – AndroidDev93

+0

मैंने यह नहीं कहा कि यह नहीं है। मैंने कहा कि मुझे नहीं पता, cuz मैंने कभी ऐसा नहीं किया है और चूंकि आपके पास इरादे से परिभाषित मेनिफेस्ट पर प्रारंभिक कक्षा है: <श्रेणी एंड्रॉइड: name = "android.intent.category.LAUNCHER" />

उत्तर

18

ठीक है तो मुझे पता है कि आपको पहले से ही एक और समाधान मिला है, लेकिन मैं उस पर चारों ओर घूम रहा था और मेरे लिए काम करने वाला कुछ पाया। एक इरादा बुलाए जाने के बजाय मैंने लंबित इंटेंट, एक इरादा फ़िल्टर, और लंबित पोस्ट का उपयोग किया। इस मुद्दे के साथ किसी और के लिए यहां एक कोड स्निपिट है।

Context context = MyApplication.this.getApplicationContext(); 
Intent errorActivity = new Intent("com.error.activity");//this has to match your intent filter 
errorActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
PendingIntent pendingIntent = PendingIntent.getActivity(context, 22, errorActivity, 0); 
try { 
    pendingIntent.send(); 
    } 
catch (CanceledException e) { 
     // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 

फिर अपने प्रकट सिर्फ मैं, इस मामले पर सही दृष्टिकोण के बारे में यकीन नहीं है के रूप में मैं इसे कभी नहीं किया था आप को पकड़ने गतिविधि

<activity 
    android:name="UncaughtErrorDialogActivity" 
    android:theme="@android:style/Theme.Dialog" > 
    <intent-filter> 
     <action android:name="com.error.activity" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 
संबंधित मुद्दे