确定下动态注册receiver是否成功了。

解决方案 »

  1.   

    IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED)
      

  2.   

    这个怎么确定啊。。
    你是使用手工注册方法,可以先判断是否已经增加ACTION过滤,查看我给你的代码
      

  3.   

    这个怎么确定啊。。
    你是使用手工注册方法,可以先判断是否已经增加ACTION过滤,查看我给你的代码
    我试了你给我的代码,还是没出来啊。。
      

  4.   

    androidMANIfest.xml代码放出来看看
      

  5.   

    额,这个要加权限的么?
    首先要在这里注册,然后需要加权限的还要加权限
    不过你的是动态注册,就不需要在这里注册
    是啊,我不需要manifest的注册啊,我看这个好像也不需要加什么权限吧,不知道哪里出问题了。。
      

  6.   

    我知道,我最近写了很多广播。
    我一般会这么写
          private InstallReceiver receiver;
          private IntentFilter filter;       onCreate(){
             receiver = new InstallReceiver();
             this.registerReceiver(receiver,filter)
           }       class InstallReceiver extends BroadcastReceiver{  
                public InstallReceiver(){
                   filter = new IntentFilter();
                   filter.addAction(Intent.ACTION_PACKAGE_ADDED);
                 }          @Override  
             public void onReceive(Context context, Intent intent) {  
                 // TODO Auto-generated method stub  
                 if(intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)){
                     String packName = intent.getDataString().substring(8);                 System.out.println(packName);             }        
             }
         }     ondestory(){
           this.unregistReceiver(receiver);
         }你这里filter没有加action
      

  7.   

    额,还是一样,这个问题其实楼上已经让我加过了,还是一样。。
    这个通知意思是应用装完后会打出packName咯?可是就是没出来啊、、
      

  8.   

    我没仔细看你的代码,发觉你还没解决,你少了个步骤,就是你这里
    IntentFilter filter = new IntentFilter();
    registerReceiver(receiver, filter);
    应该这么写:
    IntentFilter filter = new IntentFilter();
    //把这个Action加进去
    filter.addAction(Intent.ACTION_PACKAGE_ADDED);
    registerReceiver(receiver, filter);
      

  9.   

    楼上的都说要加这个:filter.addAction(Intent.ACTION_PACKAGE_ADDED);差不多,你看看sdk的demo关于广播的这一块,对比一下自己的
      

  10.   

    额,还是一样,这个问题其实楼上已经让我加过了,还是一样。。
    这个通知意思是应用装完后会打出packName咯?可是就是没出来啊、、你看log,一般用log.i(TAG,name);看吧,如果用System.out.println(name);要在logcat中添加filter为,name:System.out    TAG:System.out在这里看打印结果,控制台看不到,不知道会不会是这个问题。或者打印下别的数据看看广播有没有收到,或者数据出问题了,那边没发广播。
      

  11.   

    额,还是一样,这个问题其实楼上已经让我加过了,还是一样。。
    这个通知意思是应用装完后会打出packName咯?可是就是没出来啊、、你看log,一般用log.i(TAG,name);看吧,如果用System.out.println(name);要在logcat中添加filter为,name:System.out    TAG:System.out在这里看打印结果,控制台看不到,不知道会不会是这个问题。或者打印下别的数据看看广播有没有收到,或者数据出问题了,那边没发广播。

    额,我在manifest里注册了,就能成功打出来,这代码里注册就不行应该不是你说的这个原因吧。。感觉应该是注册错了,又不知道错在哪。。
      

  12.   

    要接受这个系统广播,不仅要加权限,动态注册时加action,还要加setData();在配置文件的这个属性 android:scheme="package"
      

  13.   

    你说的好像有点道理,动态注册要把android:scheme="package"加到哪里去啊?
      

  14.   

    加上filter.addDataScheme("package");后解决啦,谢谢各位啊!