2016-04-27 10 views
0

私はSIP電話アプリで作業しており、着信コールがスティッキーバックグラウンドサービスから転送されるようなネットワークイベントがあります。これが起こると、私はIncomingCallActivityを開き、 "答え"、 "拒否"、 "偏向"(ボイスボックスへ)などの通常のコントロールを表示します。"着信コール"ホームのプレスでアクティビティが殺されない可能性があります

これは完全に機能しますが、ホームボタンを押したときに通知を表示しても(着信を失うことはありません)、「ホーム」を押すと同時にAndroidがアクティビティを殺すことがあります。

これは悪いです。いくつかのネットワークが接続されており、クリックするとその通知は何も表示されません。マニフェストに

、アクティビティ通知が常に着信の新しいインスタンスを作成することを、回避する

android:launchMode="singleTask" 

を有しています。

私はsavedInstanceStateバンドルについて知っていますが、私はこのアクティビティを「特別な」ものと見ています - >だから、少なくとも、リンギング中にAndroidに私の活動をアピールするように強制する方法はありますか...秒ですか?私が試した何

@Override 
protected void onDestroy() { 
    if (answer_clicked || decline_clicked || hangUpDuringRing) 
     super.onDestroy(); 
} 

これは単に保留)(デストロイがあること「のAndroidを言わない」しようとしました。 結果は次のとおりです。

Uncaught application level exception. This is a crash point.                       
(+) java.lang.RuntimeException: Unable to stop activity 
android.util.SuperNotCalledException 

この特殊なケースでは別の方法がありますか?

ありがとうございます!

+0

これは常に可能性があります。 'Activity'で破壊してはならないものは' Service'に属していなければなりません。 –

+0

サービスで音声を再生できますか?それは、それが破壊されると停止する活動によって演奏された着信音のようなものです...私は鳴っている間、HOMEボタン(と戻るボタン)を無効にするための解決策を取るだろう。 – Grisgram

+0

[はい。](http://www.helloandroid.com/tutorials/musicdroid-audio-player-part-ii)(このチュートリアルはかなり古いですが、 'MediaPlayer'の代わりに' SoundPool'を使いたいかもしれません。 ) –

答えて

0

私の問題は、manifestのアクティビティにpersistentという属性を使用するだけで解決できると思われます。私はこれを使用するので、私はそれについて知らなかった

<activity 
     android:name=".ui.RingingActivity" 
     android:configChanges="keyboardHidden|orientation|screenSize" 
     android:launchMode="singleTask" 
     **android:persistent="true"** 
     android:screenOrientation="portrait" 
     android:theme="@style/AppTheme.NoActionBar"> 
    </activity> 

が、これ以上の活動を破壊した(私はまだAndroidのに新しいです)。

関連する問題