2013年11月25日月曜日

Androidアプリ 実行時にClassNotFoundException発生!?

Androidアプリを実行したら、以下のようなエラーが出た。

10-30 22:55:51.304: E/AndroidRuntime(791): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{パッケージ名/パッケージ名.Activity名}: java.lang.ClassNotFoundException: Didn't find class "パッケージ名.Activity名" on path: DexPathList[[zip file "/data/app/パッケージ名.Activity名-1.apk"],nativeLibraryDirectories=[/data/app-lib/パッケージ名.Activity名-1, /system/lib]]
10-30 22:55:51.304: E/AndroidRuntime(791): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)

java.lang.ClassNotFoundExceptionは「Javaのクラスファイルが見つからない」ということ

【原因その1】
AndroidManifest.xmlで定義しているActivityの名前と、Javaソースのクラス名が一致しない。
(今回はこれ↑でした。よ~~く見たら、一字違ってた(^^;;;)

ちなみに、Activityの定義そのものがない場合は、ActivityNotFoundExceprionになる。

【原因その2】
Android Private Libraries をエクスポートしていない。
詳細はコチラ↓
http://android.keicode.com/devenv/class-not-found.php

2013年11月13日水曜日

Windows7 標準ユーザでユーザ環境変数を設定するには

よく知られている環境変数の設定方法は、
システムの詳細設定から行う方法


しかし、この方法だと、標準ユーザの場合、
管理者としてのログインが求められ、それでログインできても
システム環境変数の変更はできてもユーザ環境変数は変更できない。

ユーザ環境変数の変更方法

(1)コントロールパネル -> ユーザアカウント で、

左のコントロールパネルホームのメニュー一覧の
「環境変数の変更」を選択する

(2)Windowsキー押下の「プログラムとファイルの検索」で、
(または、Windowsキー+Rでコマンド入力)

「env」と入力する

2013年10月28日月曜日

Windows7 ウィルススキャンが邪魔してファイル共有できない?!

基本的なチェックの「ウィルスチェックソフトが邪魔をしているかも」の補足

Windows7のファイル共有で参照はできるが書き込みはできなくて、
調べたら、McAfeeウィルススキャンが邪魔をしていた。

McAfeeオンアクセススキャンの設定の変更

①右クリックで「VirusScanコンソール」を選択
 (コンピュータアクセスのダイアログはOKを選択) 
②一覧の「アクセス保護」をダブルクリック
③「ウィルス対策アウトブレークコントロール」を選択
④「すべてのシェアからの読み出しと書きこみをさせない」の×印 を はずす

2013年10月10日木曜日

AIR インストーラーが正しく構成されていないのでアプリケーションをインストールできませんでした

ある日、昔作ったAdobe AIRアプリがインストールできない、と電話があった。

社内で時々利用されているのだが、ひさしぶりにインストールしようとしたら、

「インストーラーが正しく構成されていないのでアプリケーションをインストールできませんでした。アプリケーションの作成者にお問い合わせください。」

とのこと。

AIRランタイムを以前の(正常に動いていた)ものに変えみても一緒だったそう。

早速試してみると、確かにエラーが表示されインストールできない。
う~~ん、、、、。

原因は、証明書の期限切れだった。
ADTの自己署名入り証明書を使用して、AIRインストールファイルを作ったのだが、
その有効期限が5年だったのだ。

もう5年もたったのか、、、、。
再度作り直して、解決(^^;;

2013年9月9日月曜日

Windows8 デスクトップアイコンが勝手に拡大?!

Window8のデスクトップ画面で、タッチパッドで操作していたら、

ぐ~~ん、、、と、勝手にデスクトップアイコンが大きくなったり、
小さくなったり(^^;;

な、なに???

調べたら、

CTRLキーとマウスホイールの組み合わせで、デスクトップやIEの拡大率を変えることができるが、
それが勝手に動いたよう↓

マイクロソフトコミュニティ「勝手に画面が拡大」


元に戻すには、

デスクトップで右クリック->表示->小アイコンを選択

参考サイト
http://qa.support.sony.jp/solution/S1206290039429/


(その他)
デスクトップ画面全体の項目の大きさを変更するには、

コントロールパネル->デスクトップのカスタマイズ->ディスプレイ->すべてのサイズを変更する

参考サイト
http://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=013904

2013年8月30日金曜日

Android エミュレータ起動でタイムアウトが発生

WindowsのAndroid開発環境でマシンの実装メモリが少ないと、
エミュレータ起動時(あるいは、エミュレータでのAP起動時)に、
タイムアウトが発生することがある。

(対処方法その1)タイムアウト値を長くする。

  (1)メニューの【ウィンドウ】→【設定】で、設定ダイアログを表示
  (2)左の一覧から【Android】→【DDMS】を選択し、右に表示された
   「ADB接続タイムアウト」の値を増やす。

(対処法その2)AVD(Android Virtual Devices)の使用メモリを減らす。

  (1)メモリー・オプションのRAMとVMヒープの値を減らす。
   (参考 ターゲットAndroid2.2で、 RAM:256 VM:24 にした)
  (2)SDカードのサイズを最小の9(MB)にする。
   (3)エミュレーションオプションのスナップショットのチェックなし(デフォルト)
   (参考)スナップショットをチェックすると、エミュレータ終了時のイメージを保存し、
   それを使い起動するので起動が早くなる。が、リソースを使う。

   など、調整してみてください。
   

2013年8月20日火曜日

Office2010 ライセンス猶予期間を延長する方法

Office2010の試用期間は60日だが、その猶予期間をリセットすることで延長して使える方法(ただし最大5回まで、1回につき30日延長)

①猶予期間のリセットには管理者権限が必要なので、
[すべてのプログラム]→[アクセサリ]→[コマンドプロンプト]を右クリックして、
[管理者として実行]を選択

②ライセンス認証フォルダに移動
>cd  ¥Program Files¥Common Files¥Microsoft Shared¥OfficeSoftwareProtectionPlatform

③ライセンス猶予期限のリセット
>ospprearm.exe
と入力すると、
「Microsoft Office rearm successful.」等と表示される

詳細は、

2013年7月26日金曜日

Windows8 自動修復でPCを修復できない(><)

ある夜、PCの電源を入れると、

自動修復の準備をしています...」と表示され、いつまでたっても終わらない。
そのまま一晩置いたが、まだ終わってなかった(><)
イラっとして電源OFFしたのがまずかったのか、
次に起動したときには、
「自動修復でPCを修復できませんでした」
となり、「シャットダウン」か「詳細オプション」しか選べない。

あわてて、バックアップを取ろうとしたが、ダメ。

「詳細オプション」から「PCのリフレッシュ」を試すがダメ。
「システムの復元」も試すがダメ。

コマンドプロンプトでチェックディスクを試す。
参考サイト↓
http://mbsupport.dip.jp/tra/tra67.htm

http://blogs.yahoo.co.jp/akio_myau/45151897.html

コマンドプロンプトで
>chkdsk /scan を実行すると
「このドライブをスキャン中にスナップショットエラーが発生しました。オフラインスキャンを実行してください。...」と表示。

>chkdsk /offlinescanandfix  を実行すると
少し修復して終了。が、ダメ。

>chkdsk d:  /offlinescanandfix と1つずつディスクを指定して実行。

WIndows7の入っているディスクはロックがかかっていてscanできなかったが、
Dドライブは、
壊れたファイルセグメントを削除します。
と山のように出て、
インデックスのないファイルをスキャンしています。
と、66%くらいから、亀のあゆみ、になったが、そのまま一晩放置。
一晩たっても終わってなかったので、そのまま出張に出た。

帰って来たら、またまた
「自動修復でPCを修復できませんでした」の画面.....orz

修理に出したが、約1週間して「リカバリディスクで初期状態に戻していいですか」の連絡。

ディスクのデータは復旧してくれないらしい。
なんじゃい!リカバリかけるなら自分だってできるわい!
なんでそれに1週間もかかるんじゃ~~(怒)

(追加)
Windows8は優待プログラムでオンライン購入したが、控えが残ってなかった。
Microsoftの窓口に電話することに、、、(とほほ)
0120-70-2077 オンラインダウンロード事務局






2013年7月24日水曜日

Windows7 ライセンス猶予期間を延長する方法

Windowsはライセンス認証の猶予期間(30日)以内であれば、ライセンス認証をしなくても使える。
その猶予期間をリセットすることで延長して使える方法(ただし最大3回まで)

①猶予期間のリセットには管理者権限が必要なので、
[すべてのプログラム]→[アクセサリ]→[コマンドプロンプト]を右クリックして、
[管理者として実行]を選択

②現在のライセンス認証情報の確認
コマンドプロンプトで、
   >slmgr -dlv
 と入力すると、ライセンスサービスのダイアログが起動し、
 「残りのWindows猶予期限リセット可能回数」を確認できる。

③ライセンス猶予期限のリセット
>slmgr -rearm
と入力すると、「コマンドは正常に完了しました。
変更を有効にするにはコンピュータを再起動してください。」
とダイアログ表示される。

④再起動する

詳細は、
Windows 7 の再初期化数について | SE の雑記

2013年7月6日土曜日

VAIO Windows 8 Wi-Fi (無線LAN) がオフ?!

無線LANルーターの調子が悪かったので、
いろいろやってたら、
無線LANがまったくOFFになってしまった。

★[設定]の[ワイヤレス]で、ワイヤレスOFFしか表示されていない
  なので、そこからONにすることができない。

★本体のWIRESSの状態を示すランプがついていない。

本体に無線LAN切り替えスイッチがあるのか、と探したが、
見つからない。

…で、ついに、VAIO電子マニュアル登場(^^;;

(VAIO Smart Networkアイコン)をクリックすると、
「無線機能」と「無線 LAN」の切り替えスイッチが表示された。
「Off」から「On」に切り替え!!

なぁ~んだ、こんなところにあったのか、、、。


2013年6月22日土曜日

Windows8 高速起動のしくみ

Windows8では、休止状態から復帰させることで高速スタートアップを実現している。


普通はそれで問題ないのだが、
システムを完全に再起動させたい場合がある。
そういうときは、DOSコマンドプロンプトで、

shutdown /r /t 0

と入力すればOK

(参照元)
@IT 素早い起動を可能にする「高速スタートアップ」

2013年6月12日水曜日

Windows ディスクの分割

Windows Vista/7の場合「ディスクの管理」を使ってパーティション分割が可能

「スタート」メニューの「コンピューター」を右クリック、表示されるメニューから「管理」を選択する
②コンピュータの管理ダイアログの「ディスクの管理」を選択する。
③ドライブを選択し右クリック、「ボリュームの縮小」を選択する

参考サイト↓
http://freesoft-100.com/pasokon/disknokannri.html

2013年6月7日金曜日

Javaの0除算

Javaの0除算は、
int型同士だと、ArithmeticExceptionの例外が発生する
が、
doubleだと、NaN(Not a number 非数)になる
(例 0.0/0 -> NaN)
という仕様。

なぜか、というと、計算の仕方が違うから。

int同士の割り算は、通常、CPUの「除算命令」で実行し
float同士の割り算やdouble同士の割り算は、
通常、浮動小数点演算コプロセッサ、もしくはソフトウェアで演算するから。
コプロセッサの場合(ソフトウェアも同じ)、
0除算の演算結果は「0以外/0は無限大(inf)」になり「0/0は非数(nan)」になり例外は発生しない。

ちなみに、分母が0でないときには、Infinity(無限大)になる
(例 1.0/0 -> Infinity)

参考サイト↓
http://www.ibm.com/developerworks/jp/java/library/j-jtp0114/

2013年6月3日月曜日

Windows 7 「送る( Send to)」メニューにショートカットを追加

右クリックの「送る」に任意のプログラムのショートカットを追加するには、
設定ファイルの保存されているフォルダに、ショートカットを配置する。
場所は、

C:\Users\<ユーザID>\AppData\Roaming\Microsoft\Windows\SendTo

(windows XPでは、C:\Documents and Settings\<ユーザID>\SendTo だった)

なお、AppDataフォルダは隠しフォルダなので、
エクスプローラの[ツール]メニューから[フォルダオプション]を開き、
[表示]タブで、「ファイルとフォルダーの表示」の設定の
「隠しファイル、隠しフォルダー、および隠しドライブを表示する」を選択する。

2013年5月31日金曜日

Windows7 ユーザ名の変更

Windowsインストール時に指定したユーザ名が適切じゃなかった。
コントロールパネルからユーザアカウントの変更をしても、
変わるのはログイン時に表示される名前だけ。

Microsoftのフォーラム記事を読み、

「コンピューターの管理」→ [ローカルユーザーとグループ]→[ユーザー]をクリックし、
目的のユーザーで右クリックし、[名前の変更]で名前を変更し、
ログインし直したが、
C:\ユーザの下のフォルダ名は変わっていなかった。

新しくアカウントを作成して、移行するしかないようだ.....orz

参考サイト
http://answers.microsoft.com/ja-jp/windows/forum/windows_7-security/windows7%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9/782ee029-0f74-4fdc-8d40-6ceb6596d372


2013年5月1日水曜日

Androidアプリ開発 GPS機能ON/OFF

スマホを紛失したとき、
 ・マナーモードをオフ
 ・GPSオフ
 ・データ通信オフ
にしてたので、電話をかけても聞こえず(当然^^;;
docomoのケータイお探しサービスも役に立たなかったので、
 ・マナーモードをオンにして音量最大に
 ・GPSをオン
 ・データ通信オン
にするアプリを作ろう!と調査開始。

通常のアプリではパーミッション(WRITE_SECURE_SETTINGS)の設定が許されてなく、
GPSオンのAPIは標準で提供されていない。
(データ通信オン・オフも非標準ですが....)

IntentをBroadCastして実現する方法を見つけた。

(抜粋)
private void turnGPSOn(){
    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

    if(!provider.contains("gps")){ //if gps is disabled
        final Intent poke = new Intent();
        poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
        poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
        poke.setData(Uri.parse("3"));
        sendBroadcast(poke);
    }
}

しかし、この方法は、Android2.3以降より使えなくなったらしい。
N03-E(Android 4.0.4)ではまったく無反応(T T)
しか~し、Nexus7ではGPSがONになった。
Android 4.2.2から復活したのだ!?
よ~わからん。

2013年4月26日金曜日

Android docomo マイアドレスを確認できない?!

パケ代節約のため、WiFi接続メインで使ってると、ある日、

「マイアドレスを確認できないため、Wi-Fi経由でメールを受信できません。
Wi-Fi接続を無効にし、spモード(FOMA)に接続後、
「マイアドレス」から最新の情報に更新してください。」
とエラー表示が.....。

指示にしたがい、通常の3G回線に切り替え、spモードメールを起動し、
「メール設定」->「その他」->「マイアドレス」をタップすると、
「マイアドレス」の下にメールアドレスが表示される。

これでOK。

詳しくはこちら↓
docomoのspモードメールでマイアドレスが消える件

ちなみに通信切り替えはこちらのアプリを使ってる↓
通信設定切替

2013年4月22日月曜日

Androidアプリ開発 着信イベント 取得方法

Androidで、電話の状態イベントを取得するには、
android.telephonyパッケージのTelephonyManagerクラスとPhoneStateListenerクラスを使う。

・リスナーの定義
 PhoneStateListenerのonCallStateChanged()メソッドをオーバーライドして、
 イベント取得時の処理を記述する。
 
・リスナーの登録
 TelephonyManagerクラスのlisten()メソッドを呼び出し、PhoneStateListenerを登録する。

なお、TeleohonyManagerは、getSystemService()で取得する。

(例)抜粋

        TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

        // リスナーの作成
        PhoneStateListener listener = new PhoneStateListener() {
            @Override
            public void onCallStateChanged(int state, String incomingNumber) {
                String stateString = "なし";
                switch (state) {
                case TelephonyManager.CALL_STATE_IDLE: //待ち受け状態
                    stateString = "待ち状態";
                    break;
                case TelephonyManager.CALL_STATE_OFFHOOK: //通話開始時
                    stateString = "通話開始 "+ incomingNumber;
                    break;
                case TelephonyManager.CALL_STATE_RINGING: //着信時
                    stateString = "着信中"+ incomingNumber;
                    break;
                }
                text.append(String.format("\n電話: %s",stateString)); // TextView(text)に出力
            }
        };

        // リスナーの登録
        telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
    }


なお、Android.manifest.xmlにpermissionの登録も必要
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

2013年4月18日木曜日

Androidアプリ公開から2ヶ月半たって


初めてAndroidアプリを公開したのは、1/29。
結局どこにも取り上げてもらえず、キーワード検索でも下の下の方に出てくる状況だったが、
気がついたら、1件レビューコメントが入っていた。
ありがとう~(涙)

約1か月後の2/27時点で、
 合計インストール数 195
 有効インストール数 84

約2か月半後の4/17時点で、

 合計インストール数 722
 有効インストール数 281

と地道に増えている。
他の通信ソフトに比べたら、まだまだだけど、
GWに新しいアプリを開発して登録しようか、という気になってきた(^^)。


(気づきその1)
デベロッパーのウェブサイトをFaceBookに変えた(2/26)後、
英語のメールが4通ほど届いていた。
・SafeApp証明書
・アプリのインストール数を増やす方法教えてあげるよ(もちろん有料)
・広告プラットフォーム用タップを試しませんか
・アプリのインストール数を増やすために検索ランキングを上げませんか
 (無料診断によると、私のアプリはconnectionで237位らしい)

というもの。
あやしい....(^^;;;

(気づきその2)
「Dell Blaze」という端末が登録機種名の第一位になっていた。
ほとんど日本人しかインストールしてないはずなのだが??と、
ググってみると、

docomoのT-01DとF-05DとF-08Dらしい↓
NTTドコモ開発者情報Blog「Androidマーケットでの登録名」





Windows8 コントロールパネルの表示

Widows8でコントロールパネルを表示する方法

1.マウスカーソルを画面 右上(または右下)の外に出し、画面右に「チャームバー」を表示させ、
  一番下の[歯車(設定)]マークをクリックし、表示される一覧からコントロールパネルを選択

 なお設定一覧へのショートカットは、[Windowsロゴ]キー +「I」キー
  

2.マウスカーソルをデスクトップの左下隅に移動させて右クリックすると、
  各種設定画面一覧が出てくるので、「コントロールパネル」を選択

 このショートカットは、[Windowsロゴ]キー +「X」キー

[Windowsロゴ]キー +「X」キーが一番スマートかな

参考サイト
http://www.724685.com/weekly/qa130206.htm

http://freesoft.tvbok.com/win8/controlpanel.html

2013年4月12日金曜日

Adobe Flash Player ダウンロード中にタイムアウト

Chromeブラウザで、
「Flash Playerが最新ではない」メッセージが出たので、
更新ボタンを押して、Adobeのサイトから最新のFlash Playerをダウンロードして、
インストールしようとしたら、

タイムアウト発生....orz

Adobeのサイトに戻ってよく読むと(最初から読め、と自己ツッコミ)

Google Chrome ブラウザをお使いの場合は、ビルトインされている Adobe® 
Flash® Player はご利用になれません。Flash Player を有効にするに
はTechNoteの手順に従ってください。

とあるじゃないか?!
が、TechNoteには、
自動的に最新になるからダウンロードする必要ない
と書いてある。

よ~わからん。

URLを直接入力して、プラグインを確認。
chrome://plugins/

確かにFlash Playerの欄には、赤字で最新にしろ、と出ている。
プラグインは有効になってるのになぁ、自動的に更新してくれないのかなぁ、、、と、
右上の詳細をクリックすると、
Shockwave Flashが2つ並んでて、上の方は無効になっていた?!

そこで、「有効にする」をクリックすると、最新のものになった↓
2つ並んで表示されているけど、いーんだろうか?
とりあえず、Flashファイルがちゃんと見えるようになったから、いっか。



2013年4月8日月曜日

Google Readerからの移行

Google Readerの終了にはまだ時間があるのに、
Googleのメニューにリーダーが表示されなくなった。
(たぶん4月1日から。3月下旬から4月初旬まで旅行してて、
アクセスしてなかった(^^;;;

で、重い腰をあげて移行することに。

米国ではfeedlyへの移行がほとんどらしいが、
日本語じゃないしなぁ、、、、
で、わざわざ新規にID登録しなくてもいいので(YahooIDを持っている)、
「Yahoo Japan」に決定。

以下のページ↓を参考にした。
http://weekly.ascii.jp/elem/000/000/133/133560/

あっという間に簡単に移行したように見えた。

が、ひとつ「現在使えません」と表示されるものがあった。

とりあえずペンチアイコン(設定)から「設定」タグと「情報」タグを確認したが問題はなさそう、、、
よくわからん?と、「設定」タグ画面でそのまま設定ボタンを押して戻ると、表示された(^^;;
なんかよくわからないが、ま、結果オーライということで。

しかし、記事にあるように地味だ.....。

その他の参考サイト
『feedly』に完全移行しました。

「Google リーダー」から「livedoor Reader」への移行方法

2013年4月3日水曜日

Androidアプリ 海外に行くと予定時間が自動的に変わるスケジューラって、、

ちょっと香港へ行ってきた。

イベントの時間を確認しようと、ジョルテを起動すると、

ん?
1時間前の時間?!
登録するとき間違ったのかなぁ、、、と他の予定の時間もずれている。

時差は-1時間。
親切に現地時間に変更してくれたのだ。


GPS機能はOFFにしているのだが、、、、。



携帯電話の時刻が自動的に変わるのは、
キャリアが変わったとき属する国・地域の標準時に合わせるんだろう。


Android端末の場合、

そのタイミングでGoogleにも通知がいくのか?!(Googleカレンダーと同期を取っているので)
と思ったが、Nexus7では日本時間のまま。

Android では、NTP は使わずに、3G回線による時刻合わせが行われているらしく、
WiFi接続では時刻も調整されないようだ。

参考サイト↓
http://android.ohwada.jp/archives/1435


ならば、ジョルテがやっているのか?
で、調べた。
たくさんあるアクセス許可の中に、

端末のステータスと ID の読み取り(READ_PHONE_STATE)

があった。たぶん、


android.telephony.TelephonyManagerクラスのgetNetworkCountryIso()

を使って国を取得してると思われ......。

しかし、自動的に時刻変更してくれなくても現地時間で予定を入れてる人
がほとんどじゃないんだろーか。
小さな親切大きなお世話だ。

どこかに注意が書いてあるのかもしれない(ジョルテのドキュメントは調べてない^^;;)が、
私たちは便利さと引き換えに個人情報を渡してるのね、、、。

なんだか怖くなってきた.....。



2013年3月28日木曜日

SQLServer 15023: ユーザーまたはロール は現在のデータベースに既に存在?!

さらに続き。
環境作成の道のりは険しい。
sql文のバッチファイルを流しただけでは、だめ、とは(><)。

一般ユーザでは、
「ログインにマッピングされたユーザ」で一覧に出てこないデータベースがあったので、
saでログインして、そのユーザに対し、使用したいデータベース名にチェックを入れると、


ユーザー'sql1'の作成に失敗しました。
ユーザー、グループ、またはロール'ユーザ名'は現在のデータベースに既に存在します。
(Microsoft SQL Server 、エラー:15023)

とエラー表示。

【解決方法】
以下のSQLを実行して、ユーザーマッピングを修復した

USE データベース名
EXEC sp_change_users_login 'Update_One', '現在のDBに存在するユーザー名', 'SQL Serverログイン名'

参考にしたサイト↓

SQL Server テーブルが見えない?!

さっきの続き。

Microsoft SQL Server 2008 のSQL Server Management Studio のオブジェクト エクスプローラで、
見えないテーブルがある。
([データベース] フォルダを展開し、さらに特定データベースを展開し、
テーブルを展開しても表示されない。)

saだと見えるので、テーブルはできている。
テーブルはsaで作成し、一般ユーザを登録し、
そのユーザにテーブルアクセスの権限は与えている。

どうやら、スキーマー名がデフォルトのdboため、見えないようだ。
(ユーザ名sql1でスキーマsql1のテーブルは見える)

試行錯誤して、以下を実施したら、見えるようになった。
(正しいかどうかは不明 ^^;)

①インスタンス直下のセキュリティのログインの特定ユーザ名をダブルクリックして
「ログインのプロパティ」を表示
②ユーザマッピングを選択し、「ログインにマッピングされたユーザ」で、
使用したいデータベース名にチェックを入れる。
③その「データベースロールメンバシップ」で、db_datareader、db_datawriterにチェックを入れる

(参考)
SQL Server Management Studio の使い方


SQLServer 現在のセキュリティ コンテキストではアクセスできません?!

1年ぶりのSQLServer2008。すっかり忘れている(^^;;)。
 sqlをバッチで流してデータベースを作成し、その後、 SQLServer2008のSQL Server Management Studioで のオブジェクト エクスプローラで [データベース] フォルダを展開すると、
エラーメッセージが表示された。
現在のセキュリティ コンテキストでは、サーバー プリンシパル 【ユーザ名】はデータベース 【データベース名】 にアクセスできません。 (Microsoft SQL Server、エラー:916)
解決策はマイクロソフトのサイトに詳しく書いてあった 
 要約すると、
オブジェクト エクスプローラで、[データベース] フォルダをクリック→
[オブジェクト エクスプローラの詳細] ページで、列見出しを右クリックし[表示のリセット] をクリック
その後、
オブジェクト エクスプローラで、[データベース] フォルダを右クリックし、[最新の情報に更新] をクリック
それでもだめな場合は、
オブジェクト エクスプローラで、[データベース] フォルダをクリック→
[オブジェクト エクスプローラの詳細] ページで、列見出しを右クリックし[照合順序] チェック ボックスをオフ
その後、
オブジェクト エクスプローラで、[データベース] フォルダを右クリックし、[最新の情報に更新] をクリック

2013年3月19日火曜日

テキスト回復コンバータでファイルを開いてください?!

Word2003で文書を開いたら、

この文書を読み取ることができませんでした。ファイルが壊れているようです。
 次の操作を行ってください: 
* ファイルを開いて、修復してください。
* テキスト回復コンバータでファイルを開いてください。

の表示(><)
[ヘルプの非表示(E)<<]クリックで詳細メッセージを見るが、
説明がわかりにくい。

結局、こういうことだった。

①Word2003を起動する。
②[ファイル] メニューの [開く] をクリックする。
③「ファイルを開く」ダイアログボックスで、破損したファイルをクリックする。
 ([Enter]を押したり,ダブルクリックしないこと!)
④[開く] ボタンではなく、その右隣りにある「▼」ボタンをクリックし、[開いて修復] をクリックする。

2013年3月15日金曜日

Androidスマホ紛失!!

先日、スマホを紛失するという、アンドロイダーにあるまじき失態をやらかした。
 2日間悶々と過ごした後、ふっと出てきたのでよかったが、反省をこめて、まとめる。

 1.電話をかけてみたが、何回かのコール音の後、留守番電話に(><)
   実はこのとき近くにあったのだが、マナーモードにしてたので、気がつかなかった。
   こういう時、マナー・モードを解除するアプリがあるということを後から知った…。     

2.ビルの6Fの会議室で作業をしているときにはポケットにあったが、
   作業を終えて地下1Fのレストランに入ったときに失くなっていた。
   来た道を戻り確認。落としたビルの管理室へ行ったが、届いていない、とのこと。

 3.ドコモへ電話。
   ドコモには「ケータイ補償 お届けサービス」というのがある。約2年間入ってて
   なくすことは無かったので、月399円をケチって入らなかったら、
   購入後3か月もたたないうちに、紛失!あぁ、ケチるんじゃなかった。

   まず、携帯お探しサービスで探してくれた。   
   が、失敗。
   そりゃそうだ、電池節約のため通信OFFにしてたんだ。
   裏目に出てしまった(T T)

   スマホが戻ってから試してみたら、GPSもオンじゃないと使えなかった....
   GooglePlayから他のアプリをインストールした方がよさそう(^^;;
   無くした時に、後からインストールして追跡してくれるアプリPlan B   

   その後、利用一時中断手続き。
   利用一時中断のメッセージに、連絡用の代わりの電話番号を入れることもできるそう。

    ドコモには遠隔ロック(おまかせロックサービス)もあるが、画面ロック+おサイフケータイロック
   なので、画面ロックかけていた&おサイフケータイ使ってなかったので、用がなかった。

 4.Googleアカウントのパスワードやその他のメールやSNSのパスワード変更。
   変更する前に、PCからGooglePlayに入り、Googleのサービスを利用してないことを確認できたので、ちょっと安心。
   (マイアプリがアップデートされてなかった、マイアカウントの設定で前回の利用日が失くす前の日だった)

 5.翌日になっても出てこなかったので、帰りに交番へ届出。

 (おまけ)  無事スマホが見つかり、利用を再開したら、画面から電話のアイコンが消えていた?!  利用停止で消えてしまったのか。なら、再開で復旧してほしいぞ(苦笑)

2013年3月13日水曜日

Windows7 ファイルの共有ができない?!

無線LANで、ファイル共有ができなかったときの確認点

まず、あたりまえですが

・コンピュータ名(ほかのPCと重なっていないか)、
・ワークグループ名(同じか)
 [スタート][コンピュータ]を右クリック[プロパティ]
・IPアドレスが自動取得になっているか
 [コントロールパネル][ネットワークの状態とタスクの表示][ローカルエリア接続][ネットワーク][インターネットプロトコル4(TCP/IPv4)]
確認


1.パブリックネットワークでは共有できない
[コントロールパネル]-[ネットワークとインターネット]-[ネットワークと共有センター]
で、ネットワークが、
ホームネットワーク か 社内ネットワークになっていること

2.共有詳細設定の確認
[共有詳細設定の変更]で、
「ネットワーク探索を有効にする」「ファイルとプリンターの共有を有効にする」 が選択されていること
「パスワード保護の共有を無効にする」が選択されていること(有効だと同じユーザしかアクセスできない)

3.フォルダの共有設定
フォルダを選択し、右クリック->[プロパティ] 
[セキュリティ]が[Everyone][フルコントロール]になっていること
(設定方法)
フォルダを選択し右クリック->[特定のユーザ]->
[EveryOne]を追加し、アクセス許可レベルを([読み取り/書き込み]に)設定し、[共有]

ウィルスチェックソフトが邪魔をしているかも
(確認方法)一時的に止めてみる

  McAfeeウィルススキャンの例


その他、
ファイアウォールが邪魔をしているかも

(確認方法)
[コントロールパネル][システムとセキュリティ][Windowsファイアウォール]
[Windowsファイアウォールの有効化または無効化]で、一時的に無効にしてみる

2013年3月6日水曜日

Windows Javaアプリを強制終了させるには

複数プロセスが起動している場合は、
コマンドプロンプトで、

>jps
と入力するとJavaプロセス一覧が表示されるのでプロセスIDを確認。

>taskkill /pid プロセスID  /F

で強制終了する

Windows コマンドプロンプトの起動方法

通常、コマンドプロンプトを起動するには、
[スタート]-[すべてのプログラム]-[アクセサリ]-[コマンドプロンプト]
だが、
ちょっと早く起動する方法

1)Windowsショートカットを使う方法(Windows XP, Windows Vista, Windows 7)
  【ウィンドウズキー + R】 で「ファイル名を指定して実行」ダイアログ表示
     cmd
 と入力して [OK]を押下 

2)Windows7だとさらに、
 Windows(またはStart)キーを押してダイアログ表示
 [プログラムとファイルの検索]フィールドにカーソルがあることを確認して
 cmd
 と、入力してEnterキーを押下

2013年3月5日火曜日

Java Logging API JDK7では

Javaの標準ライブラリでログを出力してくれるLogging APIについては、
以下のサイトに詳しく書いてある↓
http://www.02.246.ne.jp/~torutk/javahow2/logging.html

Logging APIのJava SE6からJava SE7への主な変更点

①Logger.getLoger(Logger.GLOBAL_LOGGER_NAME)は非推奨になったので、
  Logger.getGlobal()を使うこと
 
 (非推奨になった理由 このグローバル定数は初期化時にデッドロックが発生する可能性がある)

②SimpleFormatterクラスのフォーマットをプロパティで記述できる
 (Java SE 6まではSimpleFormatterクラスのサブクラスを定義しないといけなかった)

しかし、(Java SE7 update17時点では)実装に問題があり、ログが出ないことがある。
logger.setLevel(Level.INFO)を呼び出すことで回避できるらしい。
が、コンソール出力はOKだが、ファイル出力はNGだった。

(例)ソースの一部
  Logger logger = Logger.getGlobal();   // Logger.GLOBAL_LOGGER_NAME)は非推奨
  logger.setLevel(Level.INFO); // バグ回避
  logger.info("info log");

Javaアプリケーションでログ出力するには

Javaでよく聞くログライブラリは、
①java.util.loggingパッケージ
②Apache Log4J
③SLF4J
④commons-logging
⑤Logback

①はJDK1.4から入っている標準ライブラリ
それ以前は②を使ってたから、いまだにLog4Jを使ってるところが多いらしい。
②Log4Jの創始者中心になって開発したのが、③SL4J

①・②・③はログを出力してくれるライブラリだが、
④⑤は、ラッパー。
実際のログ出力に何を使っていたとしても、標準のインタフェースを提供するもの。
⑤Logbackは、④commons-loggingの後継と言われている。

まとめると、
 昔はApache Log4J+commons-logging 
だった(いまでも一番多い)が、
 これからはSLF4J+Logback

でもそのまえに標準のjava.util.loggingパッケージを使ってみよう。
機能的には劣るが、なんせ標準パッケージなので、
何も準備がいらないのがいい!
(②や③はjarファイルをダウンロードして、クラスパスを設定しないといけない)

2013年3月2日土曜日

Androidの隠しコマンド

Androidバージョンが表示されている個所を連打すると、
そのOSバージョンのキャラクターが出る話は有名だが、
今日、たまたま見つけてしまったのは、

電話番号の入力画面から、
*#*#4636#*#*
を入力すると、
携帯電話の情報を表示・設定できるらしい。

以下のサイトで電池節約術として紹介してあった。
http://androck.jp/news/topics/android-4-0life-tuushinnsetteihenn/

(自分の端末は「LTE WCDMA」となっていたので、「WCDMA only」にはしなかった。)

各メニューの説明↓
http://www.ecoop.net/memo/archives/2011-04-22-1.html

2013年3月1日金曜日

Androidアプリ公開から1ヶ月たって

1/29にAndroidアプリを公開してから、約1ヶ月過ぎた。
宣伝してもらおうと、レビュー依頼を出したが、
まったく取り上げてもらえず(^^;;;

結局、
2/27時点で、
合計インストール数 195
有効インストール数 84

どこにも取り上げられないと、こんな数なのだろうか。

入れてからアンインストールする人が多い?!
その理由が知りたい。。。。

それとも、一般的に、こんな数なのだろうか?

ずーっと評価がついてなかったけど、
100件を超えた頃「4」の評価が1つ\(◎o◎)/!
うれしかった~(*^^*)v

2013年2月8日金曜日

Androidスマホ バッテリー節約術

スマホ電池節電術の特集を見た↓ので

http://www.itmedia.co.jp/mobile/articles/1302/06/news125.html

思い出したように、いまさらですが、

スマホの電力2大消費は、GPSと通信、だと思う。
基本的にGPSはOFFにしている。使うときだけON。
通信も使わないときにはOFFにしてる。
これでパケット代も節約!!
WiFiやデータ通信をONにしているだけで電波を探しにいくので、
そのままだと新幹線移動時には電池が目に見えて減っていくのだ(^^;;

なお、データ通信をOFFにしてても電話はかかってくるので、ご安心を。

通信OFFへの切替は、My通信切替アプリをつかってる。

https://play.google.com/store/apps/details?id=jp.co.waangma.network

アプリだからウィジェットみたいに常駐しないので電池を消費しないし、
WiFiと3G/LTEを排他での切替できるし、お薦め!(^^)!


2013年2月6日水曜日

Windows XP 同時接続台数の制限解除

会社のPCは、いまだWindows XP。
家のPCもやっと昨年9月にWindows 7マシンを購入したレベルなので、
Windows 7にうとい(^^;;

Windows XP SP2以降、同時接続台数10台という制限になった。
(ワームに感染した際、他のホストへの影響を最小限にするため、Windows XP SP2とServer 2003 SP1で新たに実装されたらしい。)

この制限は、パッチを当てると解除できるそう。↓
http://elimi4.blog39.fc2.com/blog-entry-34.html

パッチはこちらから入手可能↓
http://hwrms.com/blog/?p=17

なんでいまさら、なのか、というと、
15台フロア内LANで使うという要件が発生して(マシンレンタル)、
ググったわけだ。

でも、結局、OSをWindows7でいくことにした。なので、上記のパッチは未検証(^^;;

※Windows 7より、最大同時接続台数が20台に増加した。

2013年2月3日日曜日

Android 公開アプリのインストール数を増やすには

作成したアプリをGoogle Playに登録したが、インストール数1桁/日。
公開しただけじゃ、やまのようなアプリに埋もれてしまってダメなのか....orz
ということで、ググってみた。

Androidアプリのダウンロード数アップのための宣伝方法。2012年版↓
city.hiroshima.lg.jp/www/contents/0000000000000/1355287961272/index.html

1)Androidアプリのホームページを作る
 最初の登録ではeメールアドレスだけにしていたが、
 それじゃ怪しい人が作ったアプリっぽくて誰もインストールしてくれないよなぁ、と、
 とりあえずこのブログをWebサイトURLとして登録した。

2)レビュー依頼をする
 やってみたが、最近はレビュー依頼もやまほどあるみたいで、いまのところ反応なし。
 地味なアプリは厳しい。
 
 参考サイト↓
 http://create-hotaroid.blogspot.jp/2012/03/android_16.html
 

その他
3)動画を作る
 → ゲームじゃないからなぁ、、、、。

う~ん....。
そもそも通信設定切替アプリなんて必要ない(使わない)のかなぁ....orz

他に参考にしたサイト↓
http://zetsuboh.blogspot.jp/2012/11/android.html

20インストールで絶望してたら、ワタシなんてどうなるんだ!?

(おまけ)

登録したのは、通信設定を切り替えるだけのアプリ(OFF, WiFi, LTE/3G, テザリング)
 https://play.google.com/store/apps/details?id=jp.co.waangma.network

2013年2月1日金曜日

Google Play (Androidマーケット) 登録のために

(1)アイコンの作成

アイコンガイドラインも時代とともに変わる↓
http://developer.android.com/intl/ja/guide/practices/ui_guidelines/icon_design.html

・PNGファイルを解像度毎に用意する(最低1つは必要)。Google Playで512×512のアイコンを登録する必要があるので、それを作って縮小する。


一応、テンプレートファイルが用意されている↓
http://developer.android.com/intl/ja/guide/practices/ui_guidelines/icon_design.html#templatespack


が、Webデザインは素人なので、フリーアイコンをもとに修正して作成した。


リンクフリーサイト一覧↓
http://kachibito.net/web-design/free-icon-seto-for-commercial-use.html

Androidアイコンいろいろ↓
http://phpjavascriptroom.com/?t=mobile&p=iphoneandroidmockup#a_android_appicon


(2)AndroidManifest.xml設定見直し

 ・最小APIレベルの設定 
   <uses-sdk>要素の android:minSDKVersionで指定されている。変更可能。

  ・アプリケーションのバージョン
 バージョンには、2種類ある。バージョンアップの場合は以前より大きい数字にする。
 <manifest>要素のandroid:versionCode バージョンアップの判断に使う整数。最初は1にする。
 <manifest>要素のandroid:versionName ユーザに見えるバージョン番号。文字列。最初は1.0にする。

 ・アプリケーションのラベル
 アイコンの下に表示される文字列。各国の文字表記にしたい場合は、文字列リソースを使う。
 <Application>要素のandroid:labelで指定されている

 ・アプリケーションのアイコン
 <Application>要素のandroid:iconで指定されている


(3) 署名付きのapkファイルの作成
Androidアプリケーションを公開するには署名が必須。署名はEclipseで作る自己署名でOK↓

(4)登録前に、
 ・スクリーンショット2枚以上を用意する。スクリーンショットの撮り方↓
 ・アプリケーションの説明文を考える。

(5)いよいよ登録
 Google Play Developer Console↓から登録。登録料は$25。クレジットカード承認が降りるまで公開されない。


で、登録した。時間がかかるようなメッセージがあったが、1時間くらいで登録が反映された。
登録には、公開するメールアドレスかWebサイトが必要で、スパム (メール)が来たら嫌だな、と、専用のメールアドレスを取ったのだが、一晩たってもダウンロード数

0件 

笑うしかない(^^;;

登録したのは、通信設定を切り替えるだけのアプリ(OFF, WiFi, LTE/3G, テザリング)

2013年1月31日木曜日

Android データ通信ON/OFF切替

いままでAndroid端末はWiFiでだけ使っていた(電話とメールはガラゲー)が、
先月から1台に集約した。
すると、LTE(または3G)からWiFiに切り替えるとき、
データ通信をOFFしようとすると階層が深くてなかなか面倒くさいのだ。
テザリングも使うし、、、でアプリを作ることにした。

しかし、データ通信ON/OFFのAPIは非公開だった。

http://d.hatena.ne.jp/kuwalab/20110801/1312204484

を参考に作成。
なお、今の接続状態は、
ConnectivityManagerクラスのgetActiveNetworkInfo()メソッドを呼び出し、
NetworkInfoオブジェクトを取得してから、getTypeName ()を呼び出せば、
「WIFI」か「MOBILE」が返ってくる。

こんな感じ↓

      String status = "OFF";
   ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
     NetworkInfo netInfo = cm.getActiveNetworkInfo();
     if(netInfo != null){
          status = netInfo.getTypeName ();
     }


この場合も、AndroidManifest.xmlにパーミッションの設定が必要。
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

2013年1月30日水曜日

Android テザリング設定アプリを作る

テザリング設定アプリを作ろうとしたが、APIは非公開。

2.3のドキュメントでの記述を見つけた↓
http://www.androidjavadoc.com/2.3/android/net/wifi/WifiManager.html

いつか消えてしまうかもしれないので(^^;;、転記。

isWifiApEnabled (テザリング状態取得)
public boolean isWifiApEnabled()
Return whether Wi-Fi AP is enabled or disabled.
Returns:
true if Wi-Fi AP is enabled

setWifiApEnabled(テザリングのON/OFF切り替え)
public boolean setWifiApEnabled(WifiConfiguration wifiConfig,
                                boolean enabled)
Start AccessPoint mode with the specified configuration. If the radio is already running in AP mode, update the new configuration Note that starting in access point mode disables station mode operation
Parameters:
wifiConfig - SSID, security and channel details as part of WifiConfiguration
Returns:
true if the operation succeeds, false otherwise

以下、Javaのリフレクションを使ったサンプル

(テザリング状態取得)
    private String getTetheringStatus(){
    String status = "UNSUPPORTED";
        try {
    Method method = wifiManager.getClass().getMethod("isWifiApEnabled");
    if("true".equals(method.invoke(wifiManager).toString())){
    status ="ON";
    }else{
    status ="OFF";
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
        return status;
    }


(テザリングのON/OFF切り替え)
    private void setTetheringEnabled(boolean toBeEnabled) { 
        Method method;
        try {
           method = wifiManager.getClass().getMethod("setWifiApEnabled",WifiConfiguration.class, boolean.class);
           method.invoke(wifiManager, null,toBeEnabled);
        } catch (Exception e) {
         e.printStackTrace();
}
        if(toBeEnabled){
           tetheringButton.setEnabled(false);
           tetheringStatus.setText(ON);
        }else{            
           tetheringButton.setEnabled(true);    
           tetheringStatus.setText(OFF);
        }
   }

あと、AndroidManifest.xmlでパーミッションの設定も必要。

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>



参考URL





2013年1月29日火曜日

Windows8 mfc110u.dllがない?!

MFL-Pro Suiteの再インストール」の警告が出なくなったと思ったら、
今度は、「VUDesktopToast.exe - システムエラー」の表示(T T)


「コンピューターに mfc110u.dll がないため、プログラムを開始できません。

この問題を解決するには、プログラムを再ストールしてみてください。」


「mfc110u.dll」は、VisualC++のコンポーネント。「VUDesktopToast.exe」がこれを利用してるようだ。
ちなみに、「VUDesktopToast.exe」は、「SONYのVAIOのアプリケーションのアップデートを通知してくれるツール」らしい。

mfc110u.dll は、以下のサイトからダウンロードできる。
http://www.microsoft.com/ja-jp/download/details.aspx?id=30679

64ビット版の「vcredist_x64.exe」をインストールしたが、エラーは消えない(><)

もともとの原因が手順が間違っていたので、やり直しかと思ったが、
( 「VAIO Update for Windows 8 Upgrade」をインストールした後、Windows8にアップグレードしなくてはいけないかったのだ)

32ビット版の「vcredist_x86.exe」を入れると、エラーは出なくなった。

なんと、「VAIO Updateが32ビットの互換ソフトで動いているので、

64ビットOSの場合もx86をインストールしなくてはいけなかった」のだった..............

Windows8 MFL-Pro Suiteの再インストール必要?!

Windows8のアップグレード優待が1/末まで、ということで、
残り1週間を切りやっと重い腰をあげて、チャレンジ。

しか~し、これがなかなか一筋縄ではいかない。

Windows8起動時に「MFL-Pro Suiteの再インストールが必要」という警告のメッセージが出る。
MFL-Pro SuiteはBrotherの複合機MFC-J700Dのソフトらしい。
Brotherのサイトから一式ダウンロードして、インストールしようとすると、
既にドライバはインストール済み、とエラーが出て、先に進めない。

いったん「Brotherユーティリティ」を使って削除し、再インストールしたが、
メッセージは消えない。

ControlCenter3のアップデートツールをインストールしたら消えた、という情報があったので、
http://junkgadgetslive.blogspot.jp/2012/10/windows8-mfl-pro-suite.html

試したら、消えた。
しかし、フルパッケージにはControlCenter3の最新版が入っているはず、
その前にもいろいろ試したので、それが正解なのかよくわからない。。。

2013年1月17日木曜日

Androidアプリのショートカットの作り方

Androidアプリをインストールすると、ショートカットが自動で作成されたらいいな、
と、検索したら、

ショートカット用のクラスを作って登録する、というのを発見。
http://scarlet711.blogspot.jp/2011/06/blog-post_29.html

早速試してみた
Androidmanifest.xml(追記分)
 <activity android:name=".SetNetworkShortcut">
    <intent-filter>
        <action android:name="android.intent.action.CREATE_SHORTCUT"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>


SetNetwork.java
public class SetNetworkShortcut extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO 自動生成されたメソッド・スタブ
super.onCreate(savedInstanceState);

// ショートカットの内容 インテントを発行
        Intent shortcutIntent = new Intent(getApplicationContext(), SetNetworkActivity.class);

        // ホーム画面に設置した場合のショートカットの登録内容
        Intent intent = new Intent();
        intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        Parcelable iconResource = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.droidwifi);
        // ホーム画面に設置した場合に表示されるアイコンの設定
        intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
        // ホーム画面に設置した場合に表示されるラベル名の設定
        intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));

        setResult(RESULT_OK, intent);
        finish();
}
}


しかし、これはアプリの起動方法によって複数ショートカットを持ちたい場合は有効だが、
インストール時にショートカットを自動生成してくれるものではなかった....orz

ショートカット自動生成はGooglePlayの機能だった、、、、。
設定のメニューの中にある(ただし現在はウィジェットの自動更新)
勝手に作ってくれるな、と言ってる人もいるし、やめておこう。

2013年1月16日水曜日

Android アプリがインストールできない?!

アプリケーション開発してテストしている時に、

名前が同じで、署名が合するパッケージが既にインストールされています
と表示され、インストールされなかった。

Androidアプリケーションは署名必須。
PackageManagerは、パッケージ名でアプリケーションを区別し、
同じパッケージ名のアプリケーションが既にインストールされているかどうかみる。
インストール済みの場合は、「署名に使われた証明書」が同じかどうかをチェックする。
違う場合はインストールされない。
これによって、アプリケーションの改竄を防いでいるのだ。

で、上記のエラーメッセージは、署名が違うからだめだ!というエラー。
しかし、初めてインストールしたアプリなのに(Why?)、
開発した別のアプリをインストールしているが、パッケージ名は違うはずだが、、、、。

と、AndroidManifest.xmlをよ~く見たら、
 「package=」で指定したものが一緒だった!!

ソースファイルのパッケージ指定は変えていたのだが、
プロジェクトをコピーして改造したから、AndroidManifest.xmlの「package=」がそのままだったから(^^;;

PackageManagerが見るのは、AndroidManifest.xmlの 「package=」指定だったよね(^^;;


もしGoogle Playからのインストールで、
名前が同じで、署名が合するパッケージが既にインストールされています
と出たら、要注意!
それでもインストールしたかったら、
インストール済みアプリをアンインストールして、再度チャレンジすれば入ります。

2013年1月11日金曜日

Android Widgetが、一覧に表示されない?!

ウィジェット開発のテストで、実機にインストールした。
が、

ウィジェット一覧に出てこない?!

という現象が何度か発生した。
そんなとき、端末を横に回転すると、あら不思議!ウィジェットが登場!!

ウィジェットのバグかと思ってたら、Androidくんが働いてなかっただけだったよう(^^;;

特定のデバイス(Androidバージョン4.0.4)で発生するので、
そのデバイスかバージョンの問題かと思い込んでいたが、そうでもないらしい。
詳しく解説してくれてるサイトを見つけました↓

http://www.webtech.co.jp/blog/android/2885/


「ウィジェット一覧に出てこない?!」と言われたら、

対策その1.端末を回転してもらう
対策その2.SDカードにインストールしている場合は本体にインストールしてもらう
対策その3.過去ウィジェットをインストールしたことがあるか、聞いてみる

その3(インストールしたら画面に現れる)と思ってる人もいるようで、
Google  Playでとても親切な説明を見かけるけど、必要なんですね....。

2013年1月10日木曜日

Android Widgetはデバッグできない?!

作成中のウィジェットの動作がおかしいのでデバッグしようとしたが、
eclipseでブレークポイントを設定して虫アイコンで起動しても止まらない。

調べるとサービスの場合は止まらないらしい。
日本Androidの会↓
https://groups.google.com/forum/?fromgroups=#!topic/android-group-japan/aRg_bpdPcPs

サービスのoncreateの中にandroid.os.Debug.waitForDebugger();と記述すると止まる

とあったので、Widgetで最初に呼び出されるonEnabled()メソッドの最初に記述してみた。
......確かに止まった。が、変数も式も(ウォッチしようとしても)何も表示されない。
再開、中断、ステップオーバー、ステップイン、、、アイコンはグレー表示で何もできない。

困った....。
そこでさらに調べたら、

http://tech.shantanugoel.com/2010/06/14/how-to-debug-android-widgets.html

日本語は↓
http://d.hatena.ne.jp/fxkireek/20111004/1317672620


DDMSパースペクティブのデバイスビュー(Devices)で、プロセスを指定して、虫アイコンをクリックする。
が、中断ボタンは現れたが、それ以外のボタンはダメ....orz

う~ん....困った。