スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

HttpClientとWebViewの間でCookie情報を共有

HtmlClientのリクエストで保存されたCookieは、通常WebViewには引継がれない。
WEBサイトへのログインを自動化する場合等、POSTメソッドでリクエストを送信する場合、
HttpClientでリクエストを送信し、WebViewへレスポンスを表示するような処理が必要となり、
この場合、ログイン後、WebViewを直接操作してサイトを移動した場合等に、HttpClientへログイン時に
発行されたCookieが引継がれない為、WebViewの方では認証に失敗してしまう。
HtmlClientとWebViewの間でCookie情報を共有出来れば、このような場合でもWebView側の認証をパスする
ことが出来る。
コードは以下。

-----
// HttpClientを生成
DefaultHttpClient httpClient = new DefaultHttpClient();
// POSTリクエスト
HttpPost post = new HttpPost("http://ログインのURL");

// POSTのパラメータ作成
List params = new ArrayList();
params.add(new BasicNameValuePair("account", user));
params.add(new BasicNameValuePair("password", password));
UrlEncodedFormEntity encParams = new UrlEncodedFormEntity(params, HTTP.UTF_8);
post.setEntity(encParams);

// POST送信
HttpResponse res = httpClient.execute(post);

// Cookie取得
CookieStore store = httpClient.getCookieStore();
List cookies = store.getCookies();
CookieManager cookieManager = CookieManager.getInstance();
for (Cookie cookie : cookies) {
    // クッキーの設定
    if ("サイトのドメイン".equals(cookie.getDomain())) {
        // クッキーを再設定
        cookieManager.removeSessionCookie();
        cookieManager.setCookie("サイトのドメイン",
            cookie.getName() + "=" + cookie.getValue());
        CookieSyncManager.getInstance().sync();
    break;
    }
}
:
スポンサーサイト

PreferenceActivityのViewの取得

PreferenceActivityのEditText等の入力制限を掛ける場合は、~Preferenceの
中のViewを取得する必要がある。
ソースコードは以下。

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  addPreferencesFromResource(R.xml.cfg_screen);

  EditTextPreference editTextPreference = (EditTextPreference)findPreference("key"));
  EditText et = editTextPreference.getEditText();
  // ここでは1行に設定
  et.setSingleLine(true);
  :
}

SQLServerの統計情報更新

SQLServer2008で統計情報を更新するSQLは以下。

-----
UPDATE STATISTICS テーブル名 インデックス名
-----

統計情報を参照するSQLは以下。

-----
DBCC SHOW_STATISTICS ('テーブル名', XPK_MBR_PROFILE);
-----
※ テーブル名は文字列として渡す

リクエストパラメータでのRewriteRuleの条件

久々にRewriteRuleを使ったら嵌った。
RewriteRuleはQueryStringの部分は判定の対象外だというのに中々気づかず、
条件部分の正規表現を疑い続けてしまった。
RewriteRuleで特定のリクエストパラメータの条件でルールを作成したい場合は、
RewriteCondを利用する。

-----
RewriteCond %{QUERY_STRING} param=(.*)
RewriteRule ^/xxxxx.html /zzzzz.html?param=%1 [R,L]
-----

WebViewのリダイレクト時のブラウザ起動防止

androidのWebViewのデフォルトの振る舞いでは、loadUri()に渡したURLからリダイレクトの
レスポンスが返却された場合、自動的に端末のブラウザを起動してリダイレクト先のURLを表示してしまう。

これを防止する為にWebViewのWebClientをカスタマイズする必要がある。
ソースは以下。

-----
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  WebView webView = (WebView)findViewById(R.id.web_view);
  webView.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
      return super.shouldOverrideUrlLoading(view, url);
    }
  });

  :
}
-----

■APIリファレンス - public boolean shouldOverrideUrlLoading (WebView view, String url)
http://developer.android.com/intl/ja/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading%28android.webkit.WebView,%20java.lang.String%29

androidの画面表示固定

androidアプリの画面表示を縦表示→横表示の変更をなくして縦表示に固定する。

-----
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
  :
}
-----

androidのアラートダイアログの表示

androidのアラートダイアログを表示するコード。

流れとしては下記の通り。

①AlertDialog.BuilderでAlertDialogを生成
②AlertDialogの設定(タイトル、メッセージ)
③AlertDialogのボタンとボタンのリスナを設定
④AlertDialogを表示

この①~④の流れを1ステップで記述が出来る。
具体的には下記のソースを参照(以下は、ボタン1つのダイアログ)。

-----
AlertDialog dialog = new AlertDialog.Builder(context)
  .setTitle("ダイアログのタイトル")
  .setMessage("ダイアログのメッセージ")
  .setCancelable(false)
  .setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {

    }
  })
  .create();

dialog.show();
-----

LogJのConversionPatternの日付フォーマット

下記の例は、2010/01/01 00:00:00.000の形式で表示する場合の定義

-----
log4j.appender.accesslog.layout.ConversionPattern=%date{yyyy/MM/dd HH:mm:ss.fff},%m%n
-----

viエディタで文字コードを変更する方法

viエディタでファイル読み込みの文字コードを変更する方法。

-----
set encoding=euc-jp
----

上記コマンドでは、「euc-jp」に変更。

Linuxで特定の文字列を含む行を削除

sedコマンドで特定の文字列を含む行を削除。

  sed '/test/d' input.file > output.file

上のコマンドは文字列「test」が含まれる行を削除する。
プロフィール

まこち

Author:まこち
スマートフォンのアプリ開発やWebサイト構築等を仕事や趣味でやっています。
最近はグラフデータベースも始めました。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。