如何在Android中设置Receiver?

时间:2016-09-19 05:45:17

标签: android version

我想使用接收器进行自动更新。

点击后,使用URI下载。

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(strUrl));
startActivity(intent);

而我想要的是运行自动下载的apk。

现在,我必须在下载后再点击apk文件。但我想自动下载 - 运行新的Apk - 删除apk文件。

所以我试图使用接收器,但我不知道如何使用它。

1,我在清单中添加了这个。

 <receiver android:name=".common.PackageReceiver" >
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_ADDED" />
        <action android:name="android.intent.action.PACKAGE_REMOVED" />
        <action android:name="android.intent.action.PACKAGE_REPLACED" />
        <action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
       <data android:scheme="package" /> 
    </intent-filter>
</receiver>

第二,我上了新课。

package com.ezcaretech.ecf.common;
public class PackageReceiver extends BroadcastReceiver {

public static final String DOWNLOAD_COMPLETE = "android.intent.action.DOWNLOAD_COMPLETE";

@Override
public void onReceive(Context context, Intent intent) {
    String packageName = intent.getData().getSchemeSpecificPart();
    String action = intent.getAction();

    if (action.equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) {
        Log.d("TAG", "DOWNLOAD COMPLETE");
    }
  }
}

但是,下载后,接收器不再工作了。

由于

2 个答案:

答案 0 :(得分:0)

您已静态注册BroadcastReceiver,以确保在您发布的任何意图发送时启动您的应用。

然而,你的接收者只有在做到时才会做某事

DownloadManager.ACTION_DOWNLOAD_COMPLETE

答案 1 :(得分:0)

谢谢你们。我改变了我的代码

builder.setPositiveButton(R.string.kor_confirm, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
            DownloadManager dm= (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
            DownloadManager.Request request = new DownloadManager.Request(Uri.parse(strUrl));
            dm.enqueue(request);
        }
    });`

它运作良好。全部谢谢