0

私はこのコードを持っています

private void initiateInstallation() { 

        Intent intent = new Intent(Intent.ACTION_VIEW); 
        Uri uri = Uri.fromFile(new File("/sdcard/example.apk")); 
        intent.setDataAndType(uri, "application/vnd.android.package-archive");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    } 

私のサービス内からexample.apkという名前のアプリケーションをインストールします

インストールが完了したら、インストールについてユーザーに通知するアクティビティを実行したいのですが、インストールが完了する前にアクティビティが表示されることを除いて、それを行いました。問題は、サービス内で startActivityForResult を使用できないことです。したがって、インストールが完了した後にのみ通知アクティビティを開始できるように (または、サービス内で Toast を使用して何かを印刷するだけ)、これを回避する方法が必要です。「サービスのstartActivityforResultの代替」などの他の質問からの回答をすでに試しましたが、それでもこれを理解できませんでした。また、コードを入れて、そこで何かが行われる可能性があるようにします。

よろしくお願いします...どんな提案でも大歓迎です。

4

2 に答える 2

0

PACKAGE_ADDEDブロードキャストインテントを聞くことができます:http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_ADDED

私の知る限り、これらはインストールが完了した後に送信され、サービスからそれらを聞くことができます。

アプリケーションがすでにインストールされている場合は、ACTION_PACKAGE_CHANGEDを​​取得することに注意してください(私が知る限り)。

また、インテントにはパッケージ名が含まれるため、apk名だけでなく、パッケージ名も知っておく必要があります。

于 2011-10-20T11:01:37.583 に答える
0

@Pal Szasz の回答は技術的に正しいです (私の知る限り ;-) )。

ただし、質問で提供された情報に基づいて、通知を表示したいだけだと思います(プログラムによるアクションはこれ以上実行されません)。私の仮定が正しければ、そのような通知を表示しないことをお勧めします。そして、これが理由です:

Android システムには、ユーザーに通知を渡すための標準的な手段が既に備わっています。この場合、ステータス バーには、新しいアプリが正常にインストールされたことを示すメッセージが既に表示されています (エラーの場合はインストールされていません)。さらに別の通知チャネルを実装すると、標準の予期される動作から逸脱して、ユーザーを混乱させたりイライラさせたりする可能性が高くなります。

これを正気の境界を超えて取り上げると、ある意味であなたもAndroidの断片化に貢献するという事実を主張することもできます(非常に小規模ではありますが).

于 2011-10-21T07:30:22.557 に答える