簡體   English   中英

在 Android 10 中從服務啟動 Activity

[英]Start Activity from Service in Android 10

請注意,問題可能與 Android 10 有關

我試圖從 myInAppMessagingService 啟動一個新活動,但我每次都收到空指針異常 un startActivitys 上下文參數。

所以這是我的服務代碼:

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

import androidx.annotation.NonNull;

import com.google.firebase.inappmessaging.FirebaseInAppMessagingClickListener;
import com.google.firebase.inappmessaging.model.Action;
import com.google.firebase.inappmessaging.model.CampaignMetadata;
import com.google.firebase.inappmessaging.model.InAppMessage;

import viaapp_v2.systems.webview_activity.webview_base;

public class MyFirebaseInAppMessaging extends Service implements FirebaseInAppMessagingClickListener {

    String TAG = "MyFirebaseInAppMessaging";

    @Override
    public IBinder onBind(Intent intent) {
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public void messageClicked(@NonNull InAppMessage inAppMessage, @NonNull Action action) {
        // Determine which URL the user clicked
        String url = action.getActionUrl();
        Log.d(TAG, "Popup URL :"+url);

        // Get general information about the campaign
        CampaignMetadata metadata = inAppMessage.getCampaignMetadata();
        Log.d(TAG, "metadata :"+metadata);

        try{
            startActivity(
                    new Intent(MyFirebaseInAppMessaging.this, webview_base.class)
                            .putExtra("web_url", url)
            );
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

由於第一個參數上下文,我在“startActivity(..)”行中出錯。 我嘗試了所有方法 - getApplicationContext()、MyFirebaseInAppMessaging.this 或只是簡單的“this”,但沒有任何效果。

我閱讀了 Android Developers 提供的限制,但我想不出任何新的東西。

否則,該應用程序可以完美運行 - webview_base 類可以正常工作,其他所有內容也是如此,包括 myInAppMesaging 服務偵聽器。 它只是 startActivity() 中的一個上下文,它阻止了我。

謝謝你的幫助。

-- 9 月 7 日更新

在玩弄權限后,標志等。 我注意到沒有任何效果。 較新的 Android 操作系統會在應用程序上過度打開網絡,但較舊的 Android 操作系統只會在沒有任何特定崩潰報告的情況下崩潰。 這很奇怪。

試試下面的代碼,它會工作..

你必須添加 FLAG- FLAG_ACTIVITY_NEW_TASK

Intent myIntent = new Intent(this, webview_base.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(myIntent);

如果您的應用不可見且有一段時間不可見,並且您不想使用通知,則 Android 10 中將不允許使用通知,除非

該應用已被用戶授予SYSTEM_ALERT_WINDOW權限。

(來自問題中提到的限制頁面)

所以這是 Android 10 的一個選項。

在 AndroidManifest.xml 中列出SYSTEM_ALERT_WINDOW是不夠的。 您還需要用戶授予應用程序“繪制其他應用程序”權限。 在這里查看如何輕松做到這一點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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