0

私はUnityを使用してプロジェクトのアラームを設定しています。 (通常はUnityを使用しませんが、それは別の理由から必要です)。 5のパラメータで私はこのようなアラームを書いたが、この方法は、ユニティから呼び出される:Unity - Androidブロードキャストレシーバが呼び出されていない

このアラームクラスはまた、BroadcastReceiverから継承し、このようなOnReceive方法よりも優先されます
public void SetAlarm (float time) 
    { 
     Intent intent = new Intent(context, AlarmClockPlugin.class); 
     intent.setAction("ALARM_INTENT"); 
     PendingIntent pending = PendingIntent.getBroadcast(context,0,intent,0); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (long) (1000 * time), pending); 
} 

@Override 
    public void onReceive(Context context, Intent intent) { 
     PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
     PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, ""); 
     wl.acquire(); 

     // Write toast text for now 
     Toast.makeText(context,"Broadcast received",Toast.LENGTH_LONG).show(); 

     wl.release(); 
    } 

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.tombuild.myapp"> 
<uses-permission android:name="android.permission.WAKE_LOCK"/> 

<application 
    android:allowBackup="true" 
    android:label="@string/app_name" 
    android:supportsRtl="true"> 
    <receiver android:process =":remote" android:name="com.tombuild.myapp.AlarmClockPlugin"> 
     <intent-filter> 
      <action android:name="ALARM_INTENT"/> 
     </intent-filter> 
     </receiver> 
</application> 

</manifest> 

しかし残念ながらonReceiveが呼び出されていません - 何のトーストNOTIFを:

は、私はこのようなマニフェストにおける放送受信機を登録していません5秒後にポップアップが表示されますが、これはなぜですか?

答えて

0

私はユニティに精通していませんが、あなたが掲示したコード(例えばマニフェストにアクティビティなし)とUnityとAndroid Studioとの間に明らかな違いがあります。 setAlarmメソッドで簡単な例を試してみてください。

... 
    Intent intent = new Intent(); 
    intent.setAction("com.tombuild.myapp.ALARM_INTENT"); 
    sendBroadcast(intent); 
    ... 

そして、トーストをonReceiveメソッドに入れてください。

TutorialsPointのBroadcastReceiversに関する非常に簡単なチュートリアルがあります。

関連する問題