先日購入したAndroid Storekitだが、どうやらUnityのActivityを上書きして実装するタイプだったらしく、他のアセットと競合してしまった。
しかし幸いにもAndroid Storekitはソースコードを公開しているので大事には至らなかった。ソースコード万歳。まあUnityのActivityを継承して作ってなければこんな手間は要らなかったんだけどね。
■Android Storekitをメインアクティビティじゃなくす
こいつのActivity用途はInitをコールしているだけだったので、単純にUnity側から呼んでしまおうといった発想。
とりあえずやったことだけ。
まずはJavaサイドで、下のコードをInAppBillingManagerに追加する
public static void Init()
{
UnityPlayer.currentActivity.runOnUiThread(new Runnable() {
public void run() {
Init( UnityPlayer.currentActivity );
}
});
}
で、次はC#サイド。まずInAppBillingManagerのIsBillingSupportedを呼ぶ前に下のコードを呼び出すように修正。
あとはマニフェストのメインアクティビティをcom.unity3d.player.UnityPlayerProxyActivityに戻す。AndroidJavaClass inappBilling
= new AndroidJavaClass (BillingCONST.PLUGIN_PKG + ".InAppBillingManager");
inappBilling.CallStatic("Init");
ちなみにActivityが干渉するかどうかは、プラグインのマニフェストのメインアクティビティを確認すれば分かると思う。これがcom.unity3d.player.UnityPlayerProxyActivity以外を指してたら注意。