Regles-soft Blog

Regles-soft(リグルスソフト)のブログです。

「周波数帳検索2011-2012(非公式)」で旧バージョンからのアップデート後に起動できなくなった場合

表題の件についての対処方法です。
申し訳ありませんが、お手数ですがアプリのアンインストール後、再度インストールを行って下さい。
もしSDカードに「frequency_search」というフォルダが存在している場合は中のファイルごとフォルダを削除した上でインストールを行って下さい。

なお、エラーの原因については調査を行いましたが既に旧バージョンが手元に無いため特定が困難であることと、おそらくプログラム修正で対応できる範疇でないと考えられるため、このような対応になってしまいました。(OSによるデータベースの読み取り権限の自動付与に関わるものと思われます。)

ご迷惑をおかけしますが、何卒よろしくお願いします。

Posted by Haseguru at PM 11:46
技術情報::Androidcomments (0)trackback (0)
Eclipseの名前変更の罠

表題について少々ハマったので備忘録を兼ねてここに記載しておきます。

カスタムしたビューをレイアウトXMLの中で使用している場合があるかと思います。
<com.hoge.sampleapp.CustomLinearLayout>~(中略)~</com.hoge.sampleapp.CustomLinearLayout>みたいに書くやつです。

このようなリソースはEclipseでクラス名やパッケージ名を変更しても書き換わらないという事象がありました。
一見ビルドエラーにならないので気づかないのですが、動かしてみると「ClassNotFoundException」が発生して強制終了しました。

そこでXMLの方も変更したクラス名に合わせて修正すると以後エラーが発生しなくなりました。

08-01 16:21:51.870: E/AndroidRuntime(32196): at java.lang.reflect.Method.invoke(Method.java:521)
08-01 16:21:51.870: E/AndroidRuntime(32196): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:861)
08-01 16:21:51.870: E/AndroidRuntime(32196): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:619)
08-01 16:21:51.870: E/AndroidRuntime(32196): at dalvik.system.NativeStart.main(Native Method)
08-01 16:21:51.870: E/AndroidRuntime(32196): Caused by: java.lang.ClassNotFoundException: net.regles_soft.test.CheckedLinearLayout in loader dalvik.system.PathClassLoader[/data/app/net.regles_soft.test-1.apk]
08-01 16:21:51.870: E/AndroidRuntime(32196): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
08-01 16:21:51.870: E/AndroidRuntime(32196): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
08-01 16:21:51.870: E/AndroidRuntime(32196): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
08-01 16:21:51.870: E/AndroidRuntime(32196): at android.view.LayoutInflater.createView(LayoutInflater.java:466)
08-01 16:21:51.870: E/AndroidRuntime(32196): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
08-01 16:21:51.870: E/AndroidRuntime(32196): ... 35 more


以上、参考まで。

Posted by Haseguru at PM 08:31
技術情報::Androidcomments (0)trackback (0)
多言語対応でダイアログ表示のヘルプを入れる簡単な方法

この方法なら派手な演出はできませんがヘルプ用にアクティビティを作るより簡単でメンテしやすいと思います。

・HTMLでヘルプを記述して、「assets」フォルダに言語毎に下の画像のようにフォルダを作成します。


・各言語のstring.xmlに下記のようにパスのプレフィックスを記述します。


日本語の場合:


<string name="help_file_prefix">file:///android_asset/help/ja_JP/</string>

デフォルト言語の場合:

<string name="help_file_prefix">file:///android_asset/help/</string>


・ヘルプを表示するコードを適当なアクティビティに追加します。

WebView wv = new WebView(getApplicationContext());
wv.loadUrl(getString(R.string.help_file_prefix) + "help_file_name.html");

AlertDialog.Builder dlg = new AlertDialog.Builder(getApplicationContext());
dlg.setTitle("Help");
dlg.setView(wv);
dlg.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//OKボタン押下時の処理
dialog.dismiss();
}
});
dlg.show();

WebViewが表示されるまでに若干間がある場合があるので読み込み中に代替の画像や文字列、あるいはProgressDialog辺りを表示しておくとより良いかと思われます。

Posted by Haseguru at PM 07:36
技術情報::Androidcomments (0)trackback (0)
Androidのバージョン毎のLogCatの観察

Androidは色々なイベントの度にLogCatに情報を出力するのは周知の事実ですが、アクティビティの起動時に出力される内容をバージョン毎に比較してみました。
どうやら内容はコロコロ変わる傾向にあるようです。

続きを読む

Posted by Haseguru at PM 04:26
技術情報::Androidcomments (0)trackback (0)
ActivityとServiceでプリファレンスを共有する

アクティビティとサービスでちょっとした設定値を共有したい場合があるかと思います。
そのような場合の解決方法です。

適当な個所に下記のようなコードを入れてプリファレンスに保存します。
putStringの部分は保存したい値の型に合わせて適当なメソッドを使用してください。


//プリファレンスに値を保存
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Editor edit = pref.edit();
edit.putString("KEY_NAME", "VALUE").commit();


プリファレンスから取り出す時は下記のように書きます。
getStringの部分も同様に保存した値の型に合わせたメソッドを使用してください。

//プリファレンスから値を取得
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String value = pref.getString("KEY_NAME", "DEFAULT_VALUE");

Posted by Haseguru at PM 03:29
技術情報::Androidcomments (0)trackback (0)

ページトップ