[英]Android Java, Can call startForegroundService in MainActivity but not in another class/activity
我需要你的幫助來理解我的錯誤,我有一個 java 腳本,我在其中調用 startForegroundService 但如果我不在主要活動中執行此操作,則無濟於事
當嘗試在我的 MainActivity 中使用 startForegroundService 時,一切都很好,但對於我的項目,我無法使用此活動。
此代碼有效
package com.example.test;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent serviceIntent = new Intent(this, ForegroundService.class);
startForegroundService(serviceIntent);
}
}
此代碼不起作用。
package com.exemple.test;
import android.app.Activity;
import android.app.Application;
import android.content.Intent;
public class Bridge {
public static Activity unityActivity;
public static void receiveUnityActivity(Activity tActivity){
unityActivity = tActivity;
}
public static void Start(){
unityActivity.startForegroundService(new Intent(unityActivity, ForegroundService.class));
}
我使用統一的 c# 腳本調用啟動方法。 c# 腳本很好,我嘗試調用另一種方法,如果我不調用服務,一切正常。
我檢查了我的清單文件,所有服務和權限都很好。
那么,我哪里錯了?
編輯:我使用來自 Unity3D 的 c# 腳本調用 receiveUnityService
c#
AndroidJavaClass unityClass;
AndroidJavaObject unityActivity;
AndroidJavaClass customClass;
void Start()
{
sendActivityReference("com.example.test.Bridge");
startService();
}
void sendActivityReference(string packageName)
{
unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
unityActivity = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
customClass = new AndroidJavaClass(packageName);
customClass.CallStatic("receiveUnityActivity", unityActivity);
}
void startService()
{
customClass.CallStatic("Start");
}
我終於找到了解決辦法。 當你為 unity 創建一個插件時,你需要兩個具有相同權限的清單文件。 所以當你構建它們時,你需要一個用於統一,另一個在插件中。
但是現在,我真的不明白為什么需要像這樣復制統一清單文件。
謝謝你的幫助:D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.