2012-07-15 61 views

回答

3

你可以注册一个PACKAGE_INSTALLPACKAGE_ADDED用于接收包的安装和卸载事件,然后开始你的Service(i.e IntentService)从广播接收机的onReceive为当增加一个新的软件包显示通知。

在的Manifest.xml:

<receiver android:name=".PackageReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.PACKAGE_INSTALL" /> 
      <action android:name="android.intent.action.PACKAGE_ADDED" /> 
      <data android:scheme="package"/> 
     </intent-filter> 
    </receiver> 
在PackageReceiver

public class PackageReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.PACKAGE_INSTALL)) { 
      //START YOUR SERVICE HERE 
     } 
    } 

} 

或者你也可以在你的服务

br = new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      // TODO Auto-generated method stub 
      //SHOW notification here or Start Notification Service 
     } 
    }; 
    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); 
    intentFilter.addAction(Intent.ACTION_PACKAGE_INSTALL); 
    intentFilter.addDataScheme("package"); 
    registerReceiver(br, intentFilter); 
+0

我还挺需要第三种方法动态地注册一个接收器!谢谢! :) – 2012-07-15 05:29:57

+0

我试过上面的代码,我发现一个错误。事情是,我无法在服务类中创建和添加意图过滤器!这有什么理由吗? – 2012-07-15 05:37:06

+0

不,你可以创建和添加服务类内的意图过滤器确保你是'imporing import android.content.IntentFilter;'在你的服务包 – 2012-07-15 05:43:08

相关问题