/* RestartingDialogFragment.java Copyright (c) 2016 NTT DOCOMO,INC. Released under the MIT license http://opensource.org/licenses/mit-license.php */ package org.deviceconnect.android.manager.setting; import android.app.Activity; import android.app.Dialog; import android.app.DialogFragment; import android.app.ProgressDialog; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import org.deviceconnect.android.manager.DConnectApplication; import org.deviceconnect.android.manager.DevicePlugin; import org.deviceconnect.android.manager.DevicePluginManager; import org.deviceconnect.android.manager.R; import org.deviceconnect.message.intent.message.IntentDConnectMessage; import java.util.List; /** * デバイスプラグインの再起動要求中ダイアログ. * * @author NTT DOCOMO, INC. */ public class RestartingDialogFragment extends DialogFragment { @Override public Dialog onCreateDialog(final Bundle savedInstanceState) { String title = getString(R.string.activity_settings_restart_device_plugin_title); String msg = getString(R.string.activity_settings_restart_device_plugin_message); ProgressDialog progressDialog = new ProgressDialog(getActivity()); progressDialog.setTitle(title); progressDialog.setMessage(msg); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); setCancelable(false); return progressDialog; } @Override public void onPause() { dismiss(); super.onPause(); } public static void show(final Activity activity) { show(activity, null); } public static void show(final Activity activity, final String packageName) { AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() { private RestartingDialogFragment mDialog; @Override protected void onPreExecute() { mDialog = new RestartingDialogFragment(); mDialog.show(activity.getFragmentManager(), null); } @Override protected void onPostExecute(final Void aVoid) { if (mDialog.isResumed()) { mDialog.dismiss(); } } @Override protected Void doInBackground(final Void... params) { DConnectApplication app = (DConnectApplication) activity.getApplication(); app.updateDevicePluginList(); DevicePluginManager mgr = app.getDevicePluginManager(); List<DevicePlugin> plugins = mgr.getDevicePlugins(); for (DevicePlugin plugin : plugins) { if (plugin.getStartServiceClassName() != null && plugin.getPluginId() != null) { if (packageName == null || packageName.equals(plugin.getPackageName())) { Intent request = new Intent(); request.setComponent(plugin.getComponentName()); request.setAction(IntentDConnectMessage.ACTION_DEVICEPLUGIN_RESET); request.putExtra("pluginId", plugin.getPluginId()); activity.sendBroadcast(request); } } } return null; } }; task.execute(); } }