[英]Unity Android Plugin isn't work
用Android Studio编写的插件可以工作五十点,
Android Studio PluginClass.java:
package androidproject.alientechlab.com.unityplugin; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.SystemClock; import android.support.v7.app.AppCompatActivity; import android.widget.Toast; import com.unity3d.player.UnityPlayer; import com.unity3d.player.UnityPlayerActivity; public class PluginClass { private Context context; private static PluginClass instance; public PluginClass() { this.instance = this; } public static PluginClass instance() { if(instance == null) { instance = new PluginClass(); } return instance; } public void setContext() { this.context = UnityPlayer.currentActivity.getApplicationContext(); } public void basla () { Toast.makeText(this.context, "Alarm Başladı", Toast.LENGTH_SHORT).show(); startAlarm(); } private void startAlarm() { AlarmManager manager = (AlarmManager)UnityPlayer.currentActivity.getSystemService(Context.ALARM_SERVICE); Intent myIntent; PendingIntent pendingIntent; myIntent = new Intent (UnityPlayer.currentActivity,AlarmReceiver.class); pendingIntent = PendingIntent.getBroadcast(UnityPlayer.currentActivity,0,myIntent,PendingIntent.FLAG_UPDATE_CURRENT); manager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+3000,pendingIntent); } public void showMessage(String message) { Toast.makeText(this.context, message, Toast.LENGTH_SHORT).show(); } }
Android Studio AlarmReceiver.java:
package androidproject.alientechlab.com.unityplugin; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; import com.unity3d.player.UnityPlayer; /** * Created by Alpaslan on 6.3.2018. */ public class AlarmReceiver extends BroadcastReceiver { @override public void onReceive(Context context, Intent ıntent) { Toast.makeText(context,"Devam ediyoruz...",Toast.LENGTH_SHORT).show(); } }
并在Unity脚本中:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PluginWrapper : MonoBehaviour { private AndroidJavaObject toastExample = null; private AndroidJavaObject activityContext = null; // Use this for initialization void Start () { if(toastExample == null) { using(AndroidJavaClass pluginClass = new AndroidJavaClass("androidproject.alientechlab.com.unityplugin.PluginClass")) { if(pluginClass != null) { toastExample = pluginClass.CallStatic<AndroidJavaObject>("instance"); toastExample.Call("setContext"); toastExample.Call("showMessage", "This is a Toast message"); } } } } public void basla () { using(AndroidJavaClass pluginClass = new AndroidJavaClass("androidproject.alientechlab.com.unityplugin.PluginClass")) { toastExample.Call("basla"); } } }
当我尝试apk时,显示PluginClass的Toast消息,但是Alarm Manager的Toast消息不起作用。 函数“ basla,setContext和showMessage”运行正常,但“ startAlarm”功能不起作用,或者我无法接收到警报消息。
谢谢...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.