Canvas
CanvasとはHTML5の新機能で、描画ができる機能です。
CanvasとはHTML5の新機能で、描画ができる機能です。
PHPでHTMLメールを送信する サンプルコードあり
でご紹介しました、PHPでメールを送信する便利なライブラリPHPMailer。
別にPHPMailerが悪いわけでもなんでもないんですが、上記のエラーが出る時は
require("PHPMailer/class.phpmailer.php");
を複数回実行していないか確認してみてください。
表題のエラーでAndroidアプリが落ちてしまうことがあります。
UIスレッド以外から、Toastを使ったダイアログを表示していたためです。
そういう場合は、Handlerを使おうね!!という意味のエラーです。
私がやっていたのはこうでした。
public class GetRoadTask extends AsyncTask<ArrayList<GeoPoint>, Void, Road> {
//中略
protected Road doInBackground(ArrayList<GeoPoint>... params) {
// インターネット接続があるかどうか確認
ConnectivityManager cm = (ConnectivityManager) localContext
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo nInfo = cm.getActiveNetworkInfo();
Road road = null;
if (nInfo == null) {
Toast.makeText(localContext, localContext.getString(R.string.no_network), Toast.LENGTH_LONG)
.show(); //これがダメ!
}else{
//この先ネットワークがあればする処理 …
}
return road;
}
}
気を利かせて、ネットワークがない場合は、その旨を表示しようと思っていたのですが、ダメ!!ですね。
この場合は、メインスレッドでコールバックを実装してonPostExecuteを実装していたので、そちらでroadがnullだったらメッセージを表示するように変更しました。
//RootDisplayActivity内
@Override
public void postGetRoadExecute(Road road) {
// プログレスダイアログを閉じる
if (m_ProgressDialog != null){
if(m_ProgressDialog.isShowing()) {
m_ProgressDialog.dismiss();
}
}
if(road != null){
//roadがあった時の処理
}else{
Toast.makeText(this, getString(R.string.cannot_get_root), Toast.LENGTH_LONG)
.show();
}
}
Google Playのサービスに接続しようとすると、上記のエラーが出て、落ちてしまう…。
エラーの通り、connectを待て、ということですね。
たとえば、私は現在位置情報を取得するmLocationClientを下記のように書いていたのですが、これではダメで
//失敗例
@Override
public void onResume() {
super.onResume();
mLocationClient.connect();
mCurrentLocation = mLocationClient.getLastLocation();
}
//成功例
@Override
public void onResume() {
super.onResume();
mLocationClient.connect();
}
// mLocationClient.getLastLocation(); はonConnectedに移す
@Override
public void onConnected(Bundle dataBundle) {
mCurrentLocation = mLocationClient.getLastLocation();
}
CakePHPの「Sanitize」クラスは、ユーザから送られた悪意のあるデータや、その他の不適切なデータを無毒化します。
通常のCakePHPでデータを保存する、Saveなどを利用する場合はいちいちサニタイズする必要はありませんが、独自でSQL文を書くときなどは、これを利用してサニタイズしたほうがよいでしょう。
ここでは、具体的にデータをSanitize::cleanを使ってサニタイズする方法を書いておきます。
http://book.cakephp.org/ja/view/1187/clean
Studentモデル student.php ファイルに次のように記載
//サニタイズクラスインポート
App::import('Sanitize');
class Student extends AppModel {
var $name = 'Student';
…以下モデルのコードが続く
Studentコントローラー students_controller.phpに次のように記載
//受け取ったデータをサニタイズする例
function add() {
Sanitize::clean($this->data['Student']);