私のアプリケーションは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
にアクセスする方法がわかりません。DownloadFile
DownloadNotificationActivity
前もって感謝します!