2016-09-19 14 views
1

私は自動更新のために受信機を使いたいです。AndroidでReceiverを設定するにはどうすればよいですか?

をクリックすると、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> 

第2、私は新しいクラスを作る。

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"); 
    } 
    } 
} 

しかし、ダウンロードした後、受信機はもう動作しません。

おかげ

+0

それかもしれ役に立つあなたがそれをチェックするために、

+1

ポストあなたのダウンロードマネージャコード –

+0

あなたが持っているPackageReceiver.DOWNLOAD_COMPLETEとDownloadManager.ACTION_DOWNLOAD_COMPLETE、どちらを使用しますか? – HendraWD

答えて

0

あなたはあなたが投稿したものの意図のいずれかが送信されたときにアプリが起動されることを保証するBroadcastReceiverを静的に登録されています。それは

DownloadManager.ACTION_DOWNLOAD_COMPLETE

+0

うん、まさに!!ありがとう – Adrian

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); 
     } 
    });` 

これはうまくいきます。おかげですべての

関連する問題