/* * Copyright 2013 two forty four a.m. LLC <http://www.twofortyfouram.com> * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * <http://www.apache.org/licenses/LICENSE-2.0> * * Unless required by applicable law or agreed to in writing, software distributed under the License is * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and limitations under the License. */ package tv.piratemedia.lightcontroler.ui; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.util.Log; import java.util.Locale; import com.twofortyfouram.locale.PackageUtilities; import tv.piratemedia.lightcontroler.Constants; /** * If the user tries to launch the plug-in via the "Open" button in Google Play, this will redirect the user * to Locale. */ public final class InfoActivity extends Activity { /** * URI to Locale in the native version of the Google Play. */ private static final String APP_STORE_URI = "market://details?id=%s&referrer=utm_source=%s&utm_medium=app&utm_campaign=plugin"; //$NON-NLS-1$ @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); final PackageManager manager = getPackageManager(); final String compatiblePackage = PackageUtilities.getCompatiblePackage(manager, null); if (null != compatiblePackage) { // after this point, assume Locale-compatible package is installed Log.v(Constants.LOG_TAG, String.format(Locale.US, "Locale-compatible package %s is installed", compatiblePackage)); //$NON-NLS-1$ try { final Intent i = manager.getLaunchIntentForPackage(compatiblePackage); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); } catch (final Exception e) { /* * Under normal circumstances, this shouldn't happen. Potential causes would be a TOCTOU error * where the application is uninstalled or the application enforcing permissions that it * shouldn't be. */ Log.e(Constants.LOG_TAG, "Error launching Activity", e); //$NON-NLS-1$ } } else { Log.i(Constants.LOG_TAG, "Locale-compatible package is not installed"); //$NON-NLS-1$ try { startActivity(new Intent( Intent.ACTION_VIEW, Uri.parse(String.format(Locale.US, APP_STORE_URI, "com.twofortyfouram.locale", getPackageName()))).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); //$NON-NLS-1$ } catch (final Exception e) { Log.e(Constants.LOG_TAG, "Error launching Activity", e); //$NON-NLS-1$ } } finish(); } }