private ProgressDialog progressDialog;
private Context context;
public String savePath;
+ private DownloadApkListener listener;
+ private int id;
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
String str = (String) msg.obj;
}
};
- public DownloadApkTask(Activity activity) {
- context = activity;
+ public DownloadApkTask(Context context,
+ DownloadApkListener downloadListener, int id) {
+ this.context = context;
savePath = context.getFilesDir().getPath();
+ listener = downloadListener;
+ this.id = id;
}
@Override
msg.obj = "ダウンロード完了!!";
handler.sendMessage(msg);
}
+ listener.onDownloadFinished(id,file);
}
}
import android.widget.Toast;
public class LectureActivity extends BaseMenuActivity implements
- OnClickListener {
+ OnClickListener, DownloadApkListener {
private static final String TAG = "LectureActivity";
private static final int TASK_REQUEST_CODE = 9;
+ Task task;
+ Apk apk;
@Override
public void onCreate(Bundle savedInstanceState) {
SQLiteOpenHelper h = new SQLHelper(this);
final SQLiteDatabase db = h.getReadableDatabase();
// DBから名前取得
- Task task = Task.find(db, id);
- Apk apk = task.findLatestApk(db);
+ task = Task.find(db, id);
+ apk = task.findLatestApk(db);
if (apk == null) {
Log.d(TAG, "apk id = " + id.toString() + " : not found");
return;
}
db.close();
//
- downloadApk(id);
- String apkName = id.toString() + ".apk";
- Intent intent = new Intent(this, TaskActivity.class);
- intent.putExtra(TaskActivity.TASK_NAME_KEY, task.getName());
- intent.putExtra(TaskActivity.APK_NAME_KEY, apkName);
- intent.putExtra(TaskActivity.QUAL_NAME_KEY, apk.getClassName());
- Log.d(TAG, "startActivity: " + apkName + ":" + apk.getClassName());
- startActivityForResult(intent, TASK_REQUEST_CODE);
+ if (!downloadApk(id)) {
+ launchApk(id);
+ }
}
@Override
}
}
- private void downloadApk(Integer id) {
- DownloadApkTask task = new DownloadApkTask(this);
+ private boolean downloadApk(Integer id) {
+ DownloadApkTask task = new DownloadApkTask(this, this, id);
File file = new File(task.savePath + "/" + id.toString() + ".apk");
if (!file.exists()) {
task.execute(
"http://www16307ue.sakura.ne.jp:3001/apks/" + id.toString()
+ "/download", id.toString() + ".apk");
+ return true;
}
+ return false;
+ }
+
+ @Override
+ public void onDownloadFinished(int id, File file) {
+ if (file != null) {
+ launchApk(id);
+ }
+ }
+
+ private void launchApk(Integer id) {
+ String apkName = id.toString() + ".apk";
+ Intent intent = new Intent(this, TaskActivity.class);
+ intent.putExtra(TaskActivity.TASK_NAME_KEY, task.getName());
+ intent.putExtra(TaskActivity.APK_NAME_KEY, apkName);
+ intent.putExtra(TaskActivity.QUAL_NAME_KEY, apk.getClassName());
+ Log.d(TAG, "startActivity: " + apkName + ":" + apk.getClassName());
+ startActivityForResult(intent, TASK_REQUEST_CODE);
}
}