まちがいさがし

スマホやガジェットについてなど。技術系メモ以外を中心に。

サービスにバインドしようとしたらjava.lang.classcastexception: android.os.BinderProxy

今まで動いてたアプリがServiceとのBindで急に

java.lang.classcastexception: android.os.BinderProxy cannot be cast to MyBinder

がでて動かなくなったのでメモ。

結論は、同じ名前のServiceのアプリがあると、
後からいれたアプリのプロセスのServiceが呼ばれるのかも。

やっていたこと

まずテストアプリを作ってServiceとActivityのバインド、やり取りをしてました。
うまく動いたので元々のアプリとマージして動作チェック。
ちょっと不満とか不具合が出てきたのでテストアプリで試し始めたら
急にバインドでキャストエラー。

Android ClassCast exception when binding to service - Stack Overflow

ここをよんでて気づいたのが、ただintentでバインドしてるだけなので、
同じpackage,クラスのままだと後のアプリの方が呼ばれてるんじゃないか?

そう思ってマージした後のアプリを動かしたら普通に動きました。
そのアプリを消したら元のテストアプリでもServiceにバインドできました!

教訓

デバッグ中でも違うアプリとしていれるならパッケージ名とかクラス名はかえた方がいいにきまってますね!
(当たり前のことができていないですね。。)