アセットフォルダー内にhtmlファイルを含むアプリケーションがあります。ユーザーがAndroidアプリケーションアクティビティ内でボタンをクリックすると、ボタンの内容が文字列に入れられ、その文字列がhtmlファイル内の文字列に渡されるようにしたいと思います。ボタンの内容を取得して、アクティビティ内の文字列に渡します。ボタンから取得した文字列を取得して、アセットフォルダー内のhtmlファイルに情報を渡す方法を知りたいですか?
3 に答える
リソース(アセットを含む)は読むことを目的としています。ファイルを開いたり、raw
ファイルを呼び出したり、xmlファイルanim
から文字列を取得したりできます。ただし、リソースに書き込むString
ことはできません。
AssetsManagerのドキュメントに記載されているように:
このクラスは、アプリケーションにバンドルされているrawファイルを単純なバイトストリームとして開いて読み取ることができる低レベルのAPIを提供します。
さて、何をしますか?他の種類のストレージオプションを調べることをお勧めします。あなたの場合、内部ストレージを使用することを強くお勧めします。
ボタンを押すだけで、さまざまなデータを含むHTMLファイルを表示しようとしていますか?HTMLファイルで%sまたは%dを使用し、$ 1 .. $ nを使用して、複数の置換を行うことができます。
$ 1%dの新しい$ 2%sがあります。
擬似コード
getHtmlFromAssets(myfile.html、unReadThings、things)ここで、unReadThingsは数値であり、thingsは文字列です。
わかる?
概念的には(HTMLを使用しますが):http://mobile.tutsplus.com/tutorials/android/android-sdk-format-strings/
以下のAndroid固有:http://javarevisited.blogspot.com/2011/12/java-string-replace-example-tutorial.html
addJavaScriptInterfaceメソッドは、WebページからAndroid XMLビューに、またはその逆に値を渡すのに役立ちます。作成時に、Webページからアクティビティクラスメソッドを呼び出すことができます。
WebView Wv = (WebView) findViewById(R.id.webView);
Wv.getSettings().setJavaScriptEnabled(true);
JavaScriptInterface myJavaScriptInterface
= new JavaScriptInterface(this);
Wv.getSettings().setJavaScriptEnabled(true);
Wv.addJavascriptInterface(myJavaScriptInterface, "AndroidFunction");
Wv.loadUrl("file:///android_asset/index.html");
次に、クラスmyJavaScriptInterfaceを作成します
class JavaScriptInterface {
Context mContext;
int tpressure;
JavaScriptInterface(Context c) {
mContext = c;
tpressure=0;
}
public int Pressure(){
return tpressure++;
}
}
サンプルのhtmlファイルは次のようになります。
<head>
<title>jQuery Mobile page</title>
<script src="jquery-1.9.1.min.js"></script>
<script src="jquery.mobile-1.3.2.min.js"></script>
<link rel="stylesheet" type="text/css" href="jquery.mobile-1.3.2.css" />
<script type="text/javascript">
$(document).ready(function () {
setInterval(function() {
$("#tire1").html(AndroidFunction.Pressure())
}, 2000);
});
</script>
</head>
<body>
<div id="some">
Tire Pressure:
</div>
<div id="tire1">
0
</div>
</body>