2017-06-19 27 views
1

私はアプリのリストを持っています。ユーザーがアプリを削除してからアプリリストを更新したいとき これを行うにはどうすればよいですか?私は検索し、放送受信機を使用して解決策を見つけた、それは最善の方法ですか?またはこれを行うための直接の方法が存在していますか?アクションの削除の結果をキャプチャできますか?アンドロイドアプリケーションパッケージを取り込む方法は?

答えて

1

まずあなたが唯一の削除にのみ興味ただ唯一、

<receiver 
     android:name=".receiver.AppStateReceiver" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter android:priority="999"> 
      <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.QUERY_PACKAGE_RESTART" /> 

      <data android:scheme="package" /> 
     </intent-filter> 
    </receiver> 

、あなたは、このよう

public class AppStateReceiver extends BroadcastReceiver { 

    public AppStateReceiver() { 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     String packageName = intent.getData().getEncodedSchemeSpecificPart(); 

     // Check if the application is install or uninstall and display the message accordingly 
     if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) { 



     } else if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) { 
      intent.setAction(intent.getAction()); 

      Intent uninstallIntent = new Intent(); 

      uninstallIntent.setAction("Uninstall"); 
      uninstallIntent.putExtra("packageName", packageName); 

      LocalBroadcastManager.getInstance(context).sendBroadcast(uninstallIntent); 

     } else if (intent.getAction().equals("android.intent.action.PACKAGE_REPLACED")) { 
      // Application Replaced 
//   toastMessage = "PACKAGE_REPLACED: " + intent.getData().toString() + getApplicationName(context, intent.getData().toString(), PackageManager.GET_UNINSTALLED_PACKAGES); 
     } else if (intent.getAction().equals("android.intent.action.QUERY_PACKAGE_RESTART")) { 

     } 
    } 
} 
を放送受信機を追加できることを追加した場合は、以下のようにそのイベントのリスナーを追加する必要があります

あなたはあなたがあなたの活動や断片やサービスを聞いて、それに基づいて処理することができます地元の放送を送信するだけで、受信者でコールバックを取得する。あなたのフラグメントで

ローカル放送リスナー、

BroadcastReceiver UninstallReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     updateItems(); 
    } 
}; 

レジスタおよび登録解除放送

LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(UninstallReceiver); 
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(UninstallReceiver, new IntentFilter("Uninstall")); 
+0

は、このコードは、許可を必要としていますか? –

+0

このレシーバの許可は必要ありません。 –

+0

ブロードキャストを登録する必要がありますか?活動の発生または? –

関連する問題