我正在編寫使用Android本機插件的Unity移動應用程序。這個插件創建後臺定位服務,並通知用戶,當他接近地圖上的特定點(這是建築古蹟順便說一句)。從Android服務中獲取Activity.Class服務
所以服務發送推送通知,並且當用戶點擊這個通知時,應該從它之前暫停的位置打開應用程序。
爲了創建這個通知,我寫了下面的代碼:
Intent intent = new Intent(this, UnityPlayerActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
Notification n = new Notification.Builder(this)
.setContentTitle(title)
.setContentText(text)
.setSmallIcon(R.drawable.app_icon)
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(Notification.PRIORITY_HIGH)
.setContentIntent(pIntent)
.setAutoCancel(true).build();
mNotificationManager.notify(notificationID, n);
訣竅是,統一的應用程序生命週期中使用一個活動(UnityPlayerActivity
)。但我必須建立獨立的.jar
文件與我的服務不能使用UnityPlayerActivity
類,因爲它不知道這一點。
我只能在運行時獲得當前的Activity
實例,並在啓動服務時使用它。
問題:如何在創建Intent
時從Service獲得Activity.class
?
感謝您的回覆。
UPD:我不能把我的服務放到Intent
的構造函數中。 Intent
構造函數中的第二個參數必須是Activity.Class
,當用戶單擊通知時應打開它。如果我把Service.Class
放在那裏,什麼都不會打開。
所以我需要把第二個參數UnityPlayerActivity
作爲我只能在運行時獲得的實例,但不知道如何將它導入到服務中。
'服務延伸Context'。爲什麼你需要一個活動? –
所以你有'新的意圖(this,this.getClass());' –
@ cricket_007哦,對不起,這是錯誤的答案。 「Intent」構造函數中的第二個參數必須是「Activity.Class」,當用戶單擊通知時該參數應該打開。如果我把'Service.Class'放在那裏,什麼都不會打開。 –