PendingIntent.getActivity()启动不起来Activity的解决办法

今天遇到一个奇怪的bug,PendingIntent.getActivity()在小米手机上面不起作用,在别的手机没有问题,估计是小米侵犯了rom的原因。源代码这个方法介绍如下:

   /**
     * Retrieve a PendingIntent that will start a new activity, like calling
     * {@link Context#startActivity(Intent) Context.startActivity(Intent)}.
     * Note that the activity will be started outside of the context of an
     * existing activity, so you must use the {@link Intent#FLAG_ACTIVITY_NEW_TASK
     * Intent.FLAG_ACTIVITY_NEW_TASK} launch flag in the Intent.
     *
     * @param context The Context in which this PendingIntent should start
     * the activity.
<span style="color:#ff0000;">     * @param requestCode Private request code for the sender (currently
     * not used).</span>
     * @param intent Intent of the activity to be launched.
     * @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},
     * {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT},
     * or any of the flags as supported by
     * {@link Intent#fillIn Intent.fillIn()} to control which unspecified parts
     * of the intent that can be supplied when the actual send happens.
     *
     * @return Returns an existing or new PendingIntent matching the given
     * parameters.  May return null only if {@link #FLAG_NO_CREATE} has been
     * supplied.
     */
    public static PendingIntent getActivity(Context context, int requestCode,
            Intent intent, int flags) {
        String packageName = context.getPackageName();
        String resolvedType = intent != null ? intent.resolveTypeIfNeeded(
                context.getContentResolver()) : null;
        try {
            intent.setAllowFds(false);
            IIntentSender target =
                ActivityManagerNative.getDefault().getIntentSender(
                    IActivityManager.INTENT_SENDER_ACTIVITY, packageName,
                    null, null, requestCode, new Intent[] { intent },
                    resolvedType != null ? new String[] { resolvedType } : null, flags);
            return target != null ? new PendingIntent(target) : null;
        } catch (RemoteException e) {
        }
        return null;
    }

标红的部分说现在这个参数不用了,但是不知这个参数究竟有什么作用(有时间了要看一下)

解决办法就是给requestCode一个随机数,示例代码如下:

	Notification notif = new Notification();
		notif.contentIntent = PendingIntent.getActivity(this.context, (new Random().nextInt(100)),
				this.intent, PendingIntent.FLAG_UPDATE_CURRENT);

如上,bug可解,原因不详,了解的大神告诉一下吧。

时间: 2024-12-16 15:44:50

PendingIntent.getActivity()启动不起来Activity的解决办法的相关文章

tomcat单独启动时闪退的解决办法,以及修改端口8080为80,

tomcat单独启动时闪退的解决办法: 点击" startup",马上就闪退了:原因一般都是没有配置%JAVA_HOME%和tomcat的环境变量造成的: 很简单: 在startup.bat那个文件下,编辑点进去之后,在最上边的echo off上面加上: SET JAVA_HOME=C:\Program Files\Java\jdk1.7.0_60 SET TOMCAT_HOME=C:\apache-tomcat-7.0.53 然后shutdown.bat里面也要加上这两句话: 然后重

VM虚拟机启动夜神模拟器卡99%解决办法

VM虚拟机启动夜神模拟器卡99%解决办法 本人出现的情况: 物理机装的是win7系统,安装了vmware14(安装过程未出现报错),在vmware14 上 win10系统(安装过程未出现报错),安装夜神模拟器(安装过程未出现报错),启动卡99%,提示退出安全软件后重试. 但是我虚拟机上压根没有装安全软件! 自己尝试了很多办法: 1. 关闭虚拟机系统的防火墙(未解决) 2. 开启VT 3.下载不同版本的夜神模拟器(未解决) 4.安装不同版本的Window 系统(未解决) 5.安装不同版本的vmwa

Android不同方式启动导致重复启动相同的Activity的问题解决办法(转载,解决了我的问题)

打开程序入口有好多种方法: 1.shell命令打开运行 2.Launcher待机界面运行 3.状态栏启动运行 4.桌面快捷方式运行 5.软件中调用运行 6.安装软件后执行“open/打开”运行 如果用户安装后立即执行“open/打开” 运行或者用adb shell命令运行应用程序,然后点HOME键把程序挂起, 然后再采用其他发送启动程序,这样则会再启动一个Main程序, 导致用户要点击多下才能退出程序, 那么原因是什么呢? 这是因为Intent的处理机制是,先比较Activity,再比较Acti

Android 避免APP启动闪黑屏的解决办法(Theme和Style)

闪黑屏的原因主要是我们启动Activity的时候,需要跑完onCreate和onResume才会显示界面 闪黑屏的原因主要是我们启动Activity的时候,需要跑完onCreate和onResume才会显示界面.也就是说需要处理一些数据后,才会显示.按照这种思路,是不是我把初始化的工作尽量减少就可以避免黑屏?事实是,就算你onCreate啥都不做,仍然会闪一下黑屏,因为初始化解析界面时需要一定时间.下面是解决办法: 1.自定义Theme 复制代码代码如下: 设置背景图Theme<style na

Activity以singleTask模式启动,intent传值的解决办法

转载请注明出处,谢谢http://blog.csdn.net/harryweasley/article/details/46557827 因为项目中,有一个消息推送的功能,每次推送一个消息,就会开启FunctionActivity,那么为了避免重复开启它,在退后的时候,多次出现该Activity,就将该Activity的启动模式变为singleTask. 这样在之后的多次启动该Activity,便会调用onNewIntent(Intent intent)方法. activity通过intent传

Activity以singleTask模式启动,intent传值的解决办法,singletaskintent

转载请注明出处,谢谢http://blog.csdn.net/harryweasley/article/details/46557827 因为项目中,有一个消息推送的功能,每次推送一个消息,就会开启FunctionActivity,那么为了避免重复开启它,在退后的时候,多次出现该Activity,就将该Activity的启动模式变为singleTask. 这样在之后的多次启动该Activity,便会调用onNewIntent(Intent intent)方法. activity通过intent传

idea 多模块依赖时 tomcat启动 找不到类解决办法

三个模块,moduleA.moduleB.moduleC,A依赖B和C,在idea中使用tomcat部署moduleA子模块时,一直提示java.lang.ClassNotFoundException. 解决方法:把依赖的模块以jar包形式加入到主模块中,如下图所示: 确定,编译,重启tomcat,启动正常.此时在编译好的lib下,能看到依赖的两个module jar包,如下: 原文地址:https://www.cnblogs.com/lidq/p/9053385.html

Linux系统在启动过程中启动级别发生错误的解决办法

一.系统启动级别一共有六个: 0:系统停机模式,系统不可以正常启动 1:单用户模式, root权限,用于系统的维护,禁止远程登陆 2:多用户模式,没有NFS网络支持 3:完整的多用户文本模式,有NFS,登陆后进入控制台命令行模式 4:系统未使用,作为保留一般不用 5:图形化模式,登陆后进入GUI模式 6:重启模式,默认级别不能为6,否则不能正常启动 示例:若我们设置默认模式为poweroff.target,则在开机的时候会出现启动关机死循环状态 使用reboot命令后,会出现如下情况:(停在该位

mysql启动之:报错解决办法

报错信息:Starting MySQL.The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid). 第一步:查看报错日志:tail -f /var/log/mysqld.log 报错信息: [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist 第二步:经查询