0

パッケージのアンインストールをリッスンするアプリケーション用のブロードキャストレシーバーがあり、要件として透過的なアクティビティを開始します。(私のアプリケーション自体には、他のアプリケーションにのみ関連するパッケージをアンインストールするオプションがあります)次のようにマニフェストにレシーバーを登録しました。

<receiver android:name=".PackageRemoveReceiver">
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_REMOVED"/> 
            <data android:scheme="package"/>
        </intent-filter>
    </receiver>  

私のレシーバークラスは次のとおりです。

public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub 
    this.context = context;
    boolean replacing = intent.getBooleanExtra(Intent.EXTRA_DATA_REMOVED, false);
    Log.d("Log","getting receivers");
    if(replacing){
        ......
                    ......


        startActivity(context);
    } 

   private void startActivity(Context context) {
    // TODO Auto-generated method stub 
    Intent i = new Intent(context, TransparentActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);

}    

だから、意図を聞いた後、それは私の活動を開いています。ここまでは正常に動作しています。

しかし、設定から別のアプリケーション(私のアプリケーション以外)をアンインストールするようなことをしているときはいつでも、それは常に私の透過的なアクティビティをリッスンして開きます。

特定のパッケージが削除されたときはいつでも、ブロードキャストのみを実行したいと思います。はいの場合、それを行う方法は可能ですか?

4

1 に答える 1

0

でパッケージ名を確認してくださいonReceive()

@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getDataString().equals("package:your.package.name")) {
        ...
}
于 2012-07-30T10:07:33.230 に答える