服务可以接收包裹吗?

Ime*_*iri 3 android android-intent android-service

我想在添加新软件包时显示通知。我找到了清单文件所需的代码!我不知道的是如何在我的服务中捕获广播。我怎样才能做到这一点?

ρяσ*_*я K 5

您可以注册一个PACKAGE_INSTALLand PACKAGE_ADDEDReceiver来接收软件包的安装和卸载事件,然后在添加新软件包时Service( i.e IntentService)onReceiveBroadcast Receiver的“开始”显示通知。

在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>
Run Code Online (Sandbox Code Playgroud)

在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
        } 
    }

}
Run Code Online (Sandbox Code Playgroud)

或者,您也可以在服务中动态注册接收者

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);
Run Code Online (Sandbox Code Playgroud)