7

アプリケーション クラスからオーディオを再生する Android アプリがあります。アプリケーション クラスに PhoneStateListener があり、電話がかかってきたときにオーディオを一時停止します。

通話が終了したときに特定のアクティビティを開始したいのですが、開始できません。ここに私のコードがあります:

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

誰かが正しい方法で活動を開始する方法を教えていただければ幸いです.

ありがとう!

4

1 に答える 1

20

わかりましたので、あなたがすでに別の解決策を見つけたことは知っていますが、私はそれを調べていて、私にとってうまくいくものを見つけました. インテントを呼び出す代わりに、pendingIntent、インテント フィルター、および保留中の投稿を使用しました。これは、この問題を抱えている他の人のためのコード スニピットです。

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>
于 2012-06-27T05:09:26.950 に答える