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);
————————-
を追記します。
さらに・・・・
横のスクロールバーの隙間をなくすには
————————-
//jacascriptを許可する
myWebView.getSettings().setJavaScriptEnabled(true);
————————-
の下に
————————-
//右側のスクロールバーの隙間をなくす
myWebView.setVerticalScrollbarOverlay(true);
————————-
を追記。
タイトルバーを消すには
super.onCreate(savedInstanceState);
と
setContentView(R.layout.activity_main);
の間に
————————-
//タイトルバーを削除する
requestWindowFeature(Window.FEATURE_NO_TITLE);
————————-
を記入。
エラー(赤い×)が出ますが、上のimportの群れに
————————-
import android.view.Window;
————————-
を追記するとエラーマークは消えます。
このままですと、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);
}
————————-
赤いエラーマークが二つ。
上の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分程で実装。
成功!
クラウドナインアップスの授業2日目にして、スタバで駅コレAndroidアプリができてしまいました!
adpc
adpc
関連記事
-
プロローグ:ジオの奇妙な冒険
2010年! それは位置ゲーとジオメディアの発展が起業家の思想と生活を変えた時代 …
-
いよいよ本番:eclipse上でプロジェクトをコピーする
クラウドナインアップス卒業後も先生に質問しまくったりサンプルコード頂いたりしまく …
-
5日目:クラウドナインアップスAndroid教室最終日
一部で好評! 八幡山ってどんなところよ?シリーズ。 京王線の八幡山駅を出て左に進 …
-
2日目:スタバで授業の復習をしたら駅コレAndroidアプリができてしまった(前編)
クラウドナインアップスのAndroidアプリ教室、2日目です。 今日はデータの読 …
-
0日目:Androidアプリ開発環境をMacに設定しかけて途中からWindowsに設定する
~前回までのあらすじ~ 「ちょっと!蕎麦の出前まだなの?」 「すみませんねェ、今 …
-
3日目:アトム・ハート・ファーザー~カメラアプリを作るッ!
あ…ありのまま 今 起こった事を話すぜ! 「AndroidManif …
-
リリース前に:apkとapkとKeyStoreとzipalign
クラウドナインアップスでの授業も終わり、なんだかアプリが作れてしまいました。 こ …
-
4日目の前日:ところで駅コレのAndroid版って
そもそも今回れさくがAndroidアプリ教室に通っている理由は、「駅コレのAnd …
-
最終回:本当に5日間でAndroidアプリが作れてリリースできた。
というわけで、5日間でできるAndroidアプリ開発も今回で最終回を迎えました。 …
-
4日目:地図アプリを作る~人生の位置情報を求めて~
「そもそも八幡山ってどんなところよ?」 そんな声が聞こえてきそうです。 こんなと …
- PREV
- iPhone4SにiOS8を入れてみた
- NEXT
- iPhone6にオンラインで機種変手続きする
Comment
通りすがりのものですが、コメント失礼します。
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)
なるべく簡潔に済ますのが良いと思われます。
パッと見でコメント残してしまい、大変失礼いたしました。
ありがとうございます!!
そして何気にコメント第一号で嬉しさもひとしおです。
頂いたアドバイス、新しい記事で取り上げさせて頂きたいと思います!