簡體   English   中英

Android Java,可以在 MainActivity 中調用 startForegroundService,但不能在另一個類/活動中調用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM