私のアプリケーションはAsyncTask、URL からファイルをダウンロードする を開始します。同時に、Notificationダウンロードの完了率をユーザーに知らせるステータス バーを作成します。
通知のクリックにアプリケーションが応答するようにしようとしています。ダウンロードがまだ進行中のDialogInterface場合は、ダウンロードを停止するかどうかを尋ねるメッセージを表示したいと思います。[はい] をクリックすると、ダウンロードが停止します。
私が抱えている問題はPendingIntent、通知用に設定した から非同期タスクにアクセスする方法がわからないことです。をDialogInterface簡単に表示することはできますが、ダウンロードが停止する場所で停止しているアクティビティを表示する方法がわかりません。
ダウンロード可能なファイルを参照する File オブジェクトだけでなく、通知にもアクセスできるヘルパー クラスを作成しようとしましたが、オブジェクトがシリアライズ可能ではないというエラーが表示されます (それは を実装していますSerializable)。ヘルパー クラスには、ダイアログを表示するかどうかの条件に使用する、ダウンロードの進行状況を保持するメンバーも含まれていました。
Brodcast アクションと受信機を使おうと思っていたのですが、受信機をどこに置けばいいのかわかりません。を拡張するクラスに入るでしょうAsyncTaskか?
どんな助けでも大歓迎です。これは にPendingIntent付属していNotificationます。もっとコードを見たい場合は、質問してください。
public class DownloadNotificationActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
Intent i = getIntent();
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick( DialogInterface dialog, int which ) {
switch ( which ) {
case DialogInterface.BUTTON_POSITIVE :
// Yes button clicked
// Stop download
finish();
break;
case DialogInterface.BUTTON_NEGATIVE :
// No button clicked
finish();
break;
}
}
};
if ( /* download not complete */ ) {
AlertDialog.Builder builder = new AlertDialog.Builder( this );
builder.setMessage( R.string.stop_download ).
setPositiveButton( R.string.yes, dialogClickListener ).
setNegativeButton( R.string.no, dialogClickListener ).show();
}
else {
// Access file
}
}
}
明確にするために、私にはViewDetailActivityクラスがあります。ユーザーが画面上のボタンをクリックすると、DownloadFile拡張されて実行されるという内部クラスがあります。AsyncTaskのdoInBackground()方法でDownloadFileは、mp3 のダウンロードが URL から開始され、ステータス バーNotificationが作成され、ダウンロードされたファイルの量に基づいて更新されます。のPendingIntentは(コードを表示)Notificationで作成されDownloadNotificationActivity、[はい] を選択すると、 でのダウンロードをキャンセルするダイアログが表示されますAsyncTask。
私の問題は、ダウンロードがキャンセルされたことをタスクに戻す必要があることです。ダウンロードをキャンセルするためにからDownloadFileにアクセスする方法がわかりません。DownloadFileDownloadNotificationActivity
前もって感謝します!