れさくのブログ

れさくのブログ

*

2日目:スタバで授業の復習をしたら駅コレAndroidアプリができてしまった(後編)

   

これまでのあらすじ

スタバでスタバなうを作った。

さて、この勢いでもっと何かができるかも。

引き続きこちらのサイトを参考にします。

src/com.example.mywebview/MainActivity.javaを開きます。

1:
前回のままだと読み込むサイトによってはJavascriptの警告が出たりします。
これを無効にします。(ご利用は計画的に)
————————-
MainActivity.javaの上の方にあるimportの群れに
import android.annotation.SuppressLint;
————————-
を追記します。

2:
public class MainActivity extends Activity {
の中の一番最初に
————————-
@SuppressLint("SetJavaScriptEnabled")
————————-
を追記します。

3:
myWebView.loadUrl(“http://stbnow.net/”);
の下に
————————-
//jacascriptを許可する
myWebView.getSettings().setJavaScriptEnabled(true);

————————-
を追記します。

上の3つをやるとこんな感じ。
WS000051

さらに・・・・

横のスクロールバーの隙間をなくすには
————————-
//jacascriptを許可する
myWebView.getSettings().setJavaScriptEnabled(true);

————————-
の下に
————————-
//右側のスクロールバーの隙間をなくす
myWebView.setVerticalScrollbarOverlay(true);

————————-
を追記。

タイトルバーを消すには
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);
の間に
————————-
//タイトルバーを削除する
requestWindowFeature(Window.FEATURE_NO_TITLE);

————————-
を記入。
WS000052
エラー(赤い×)が出ますが、上のimportの群れに
————————-
import android.view.Window;
————————-
を追記するとエラーマークは消えます。
WS000053

このままですと、backキーを押すとアプリは終了してしまいます。
今まで記入してきたprotected void onCreate(Bundle savedInstanceState) {の中ではなく、
その上の大枠public class MainActivity extends Activity {の中に以下を記入します。
ぶっちゃけMainActivity.javaの一番下の}の上に書きます。
————————-
//バックキーが押されたもアプリを終了しない
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
WebView webView =(WebView)findViewById(R.id.webView1);
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}

————————-
WS000054
赤いエラーマークが二つ。
上のimportの群れに
import android.view.KeyEvent;
を追記すると消えます。

読み込むサイトをスタバなうから駅コレに書き換えます。
myWebView.loadUrl("http://stbnow.net/");

myWebView.loadUrl("http://ekikore.com/");

ところで今の駅コレAndroidアプリには位置情報詐称対策が仕込んであります。
独特のUserAgentのほかにbase64とかSHAとかHEXとか・・・
この辺は防衛上の観点から公開できません。
(大げさw・・・でも無いんですよ。世界規模の位置ゲークラッキング事件に対応した話とか。その辺はまた別の記事で)

この辺のロジックもMainActivity.javaに追記します。
PHPなら簡単なのですが、同じことをJAVAでやると難しい。
というか全く知らないゼロの状態です。
「文字と文字を繋げる」のレベルからエンコードやハッシュの方法を調べまくって30分程で実装。

さあいよいよ、ジョジョスマホに転送してレッツ起動!
10671457_837472396304552_3584240601328250199_n

成功!
クラウドナインアップスの授業2日目にして、スタバで駅コレAndroidアプリができてしまいました!

 - 5日間でできるAndroidアプリ開発

adpc

adpc

Comment

  1. おあんつぁん より:

    通りすがりのものですが、コメント失礼します。

    onCreateメソッドとonKeyDownメソッドにて、
    webView1という同じIDのウィジェットを、
    別々にインスタンス化しているようでしたので、
    フィールドで宣言して、ウィジェットとの紐付けはonCreateで済ませ、
    onKeyDownメソッド内でgoBack()メソッドを実行する際は、
    メンバー変数で行ったほうが安全な気がいたします。

    具体的には、
    public class MainActivity extends Activity {
    の下に、
    private WebView mWebView;
    (JAVAの構文的にメンバー変数は小文字mから
    始めるcamel caseが一般的)
    の一文を追加し、onCreateメソッド内にて、
    mWebView = (WebView) findViewById(R.id.webView1);
    と記述し、onKeyDownメソッド内では、
    WebView webView =(WebView)findViewById(R.id.webView1);
    の一文は削除して、
    mWebView.goBack();
    を記述する感じです。

    同じウィジェットやクラス等を、
    別インスタンスとして生成してしまうと、
    それぞれの管理が困難になってしまう可能性がありますので、
    (私はそれでよくバグを起こしていましたw)
    なるべく簡潔に済ますのが良いと思われます。

    パッと見でコメント残してしまい、大変失礼いたしました。

    • resaku より:

      ありがとうございます!!
      そして何気にコメント第一号で嬉しさもひとしおです。
      頂いたアドバイス、新しい記事で取り上げさせて頂きたいと思います!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  関連記事

ic_launcher
おまけ:本当は大変なAndroid開発

スクールで作ったapkファイルがあれば、「新規で」アプリリリースするなら簡単。 …

eclips2
0日目:Androidアプリ開発環境をMacに設定しかけて途中からWindowsに設定する

~前回までのあらすじ~ 「ちょっと!蕎麦の出前まだなの?」 「すみませんねェ、今 …

Androidアプリにプッシュ通知を実装する

運営から限定イベントのお知らせが届いたり、新着ニュースが届いたり。 そんな通知を …

unnamed
リリース前に:apkとapkとKeyStoreとzipalign

クラウドナインアップスでの授業も終わり、なんだかアプリが作れてしまいました。 こ …

manifes2
3日目:アトム・ハート・ファーザー~カメラアプリを作るッ!

あ…ありのまま 今 起こった事を話すぜ! 「AndroidManif …

4日目の前日:ところで駅コレのAndroid版って

そもそも今回れさくがAndroidアプリ教室に通っている理由は、「駅コレのAnd …

写真 2014-11-21 2 41 32
2日目:スタバで授業の復習をしたら駅コレAndroidアプリができてしまった(前編)

クラウドナインアップスのAndroidアプリ教室、2日目です。 今日はデータの読 …

unnamed
プロローグ:ジオの奇妙な冒険

2010年! それは位置ゲーとジオメディアの発展が起業家の思想と生活を変えた時代 …

unnamed
APKファイル署名のデッドロック?

Androidアプリリリース直前の段階で最大の疑問。 【課題】 大昔に「署名なし …

5日目:クラウドナインアップスAndroid教室最終日

一部で好評! 八幡山ってどんなところよ?シリーズ。 京王線の八幡山駅を出て左に進 …