テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

Android StorekitをActivitiyオーバーライドタイプじゃなくす

先日購入した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を呼ぶ前に下のコードを呼び出すように修正。

AndroidJavaClass inappBilling 
= new AndroidJavaClass (BillingCONST.PLUGIN_PKG + ".InAppBillingManager");
inappBilling.CallStatic("Init");

あとはマニフェストのメインアクティビティをcom.unity3d.player.UnityPlayerProxyActivityに戻す。

ちなみにActivityが干渉するかどうかは、プラグインマニフェストのメインアクティビティを確認すれば分かると思う。これがcom.unity3d.player.UnityPlayerProxyActivity以外を指してたら注意。