7

Uygulama sınıfından ses çalan bir android uygulamasına sahibim. Uygulama sınıfımda telefon görüşmesi olduğunda sesi duraklatan bir PhoneStateListener var.Android: Uygulama Sınıfı'ndan yeni etkinlik başlatma

Arama sona erdiğinde belirli bir etkinliği başlatmak istiyorum, ancak yapamıyorum. işte benim kodum:

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 
..... 
..... 
} 

Eğer birisi bana doğru şekilde aktiviteyi nasıl başlatabileceğini gösterebilirse çok memnun olurum.

Teşekkürler!

+0

için amaç filtresini ayarlamak emin olun ve tezahür don uygulama sınıfından bir etkinlik başlatmanızın gerekip gerekmediğini bilmeniz gerekir, çünkü her zaman giriş sınıfını manifesto üzerinde ayarlarsınız, ancak bunu yapabileceğinizi düşünürsek ... aktivitenizi manifestoya eklediniz mi? –

+0

Etkinliğim bu bildirime eklendi. Uygulama sınıfından bir etkinlik başlatmak mümkün değil mi? – AndroidDev93

+0

Ben öyle olmadığını söylemedim. Bilmediğimi söyledim, çünkü hiç yapmamıştım ve zaten başlangıç ​​sınıfının hedefiyle tanımlandığından beri, niyetle tanımlanmış:

cevap

18

Tamam, biliyorum, zaten başka bir çözüm buldunuz, ama bu konuda çatlıyordum ve benim için işe yarayan bir şey buldum. Bir niyet çağırmak yerine, pendingIntent, bir niyet filtresi ve bekleyen bir gönderi kullandım. İşte bu sorunu yaşayan herkes için bir kod snippit.

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(); 
    } 

Sonra sadece Asla yapmadım gibi bu konuda doğru bir yaklaşım hakkında emin değilim sen alıcı etkinliği

<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> 
İlgili konular