从Android 10中的服务启动活动

如何解决从Android 10中的服务启动活动

请注意,问题可能与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开发人员提供的restrictions,但我找不到新内容

否则,该应用程序可以完美运行-webview_base类可以正常运行,其他所有功能包括myInAppMesaging Services侦听器)也可以正常运行。仅仅是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权限。

(从问题中提到的restrictions页开始)

因此,这是Android 10的选项。

,

仅在AndroidManifest.xml中列出 SYSTEM_ALERT_WINDOW 是不够的。您还需要用户授予应用“在其他应用上绘图”权限。 Check here how to do that easily

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?