0

请注意,问题可能与 Android 10 有关

我试图从 myInAppMessagingService 启动一个新的 Activity,但我每次都得到空指针异常 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 开发人员提供的限制,但我想不出任何新内容。

否则,该应用程序可以完美运行 - webview_base 类可以正常工作,其他所有内容也可以正常工作,包括 myInAppMesaging Services 侦听器。它只是 startActivity() 中的一个上下文,它阻止了我。

谢谢你的帮助。

--9月7日更新

在玩弄权限后,标志等。我注意到没有任何效果。较新的 Android 操作系统会在应用程序上过度打开网络,但较旧的 Android 操作系统只会崩溃而没有任何具体的崩溃报告。这很奇怪。

4

3 回答 3

0

仅在 AndroidManifest.xml中列出SYSTEM_ALERT_WINDOW是不够的。您还需要用户授予应用“绘制其他应用”权限。在这里查看如何轻松做到这一点

于 2020-09-26T10:33:20.800 回答
0

如果您的应用不可见并且有一段时间不可见并且您不想使用通知,则在 Android 10 中将不允许使用通知,除非

该应用已被用户授予SYSTEM_ALERT_WINDOW权限。

(来自问题中提到的限制页面)

所以这是 Android 10 的一个选项。

于 2020-09-06T00:00:42.720 回答
0

试试下面的代码,它会工作..

你必须添加标志-FLAG_ACTIVITY_NEW_TASK

Intent myIntent = new Intent(this, webview_base.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(myIntent);
于 2020-09-05T22:29:32.083 回答