Added application launch on ad click instead of browser(if its installed).

This commit is contained in:
Dmitry Yunitsky 2014-09-11 17:05:58 +03:00 committed by Alex Zolotarev
parent 6e38a480ed
commit 912ec8a52c
5 changed files with 40 additions and 7 deletions

View file

@ -40,6 +40,7 @@ public class AdsManager
private static final String COLOR_KEY = "Color";
private static final String WEB_URL_KEY = "WebURLs";
private static final String CACHE_FILE = "menu_ads.json";
private static final String ID_APP_PACKAGE = "AppPackage";
private static List<MenuAd> sMenuAds;
@ -137,6 +138,7 @@ public class AdsManager
final String title = getStringByKeyOrDefault(menuItemJson.getJSONObject(TITLE_KEY), localeKey);
final String id = menuItemJson.getString(ID_KEY);
final Bitmap bitmap = loadAdIcon(icon, id);
final String appPackage = menuItemJson.optString(ID_APP_PACKAGE);
ads.add(new MenuAd(icon,
title,
@ -144,7 +146,8 @@ public class AdsManager
id,
menuItemJson.getString(APP_URL_KEY),
webUrl,
bitmap));
bitmap,
appPackage));
}
return ads;

View file

@ -11,10 +11,11 @@ public class MenuAd implements Parcelable
private String mHexColor;
private String mId;
private String mAppUrl;
private String mAppPackage;
private String mWebUrl;
private Bitmap mIcon;
public MenuAd(String iconUrl, String title, String hexColor, String id, String appUrl, String webUrl, Bitmap icon)
public MenuAd(String iconUrl, String title, String hexColor, String id, String appUrl, String webUrl, Bitmap icon, String appPackage)
{
mIconUrl = iconUrl;
mTitle = title;
@ -23,6 +24,7 @@ public class MenuAd implements Parcelable
mAppUrl = appUrl;
mWebUrl = webUrl;
mIcon = icon;
mAppPackage = appPackage;
}
public MenuAd(Parcel source)
@ -32,6 +34,7 @@ public class MenuAd implements Parcelable
mHexColor = source.readString();
mId = source.readString();
mAppUrl = source.readString();
mAppPackage = source.readString();
mWebUrl = source.readString();
mIcon = source.readParcelable(Bitmap.class.getClassLoader());
}
@ -77,6 +80,16 @@ public class MenuAd implements Parcelable
return mIcon;
}
public String getAppPackage()
{
return mAppPackage;
}
public void setAppPackage(String appPackage)
{
mAppPackage = appPackage;
}
@Override
public int describeContents()
{
@ -91,6 +104,7 @@ public class MenuAd implements Parcelable
dest.writeString(mHexColor);
dest.writeString(mId);
dest.writeString(mAppUrl);
dest.writeString(mAppPackage);
dest.writeString(mWebUrl);
dest.writeParcelable(mIcon, 0);
}

View file

@ -18,6 +18,7 @@ import android.os.Bundle;
import android.os.Environment;
import android.support.v4.content.LocalBroadcastManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
@ -347,7 +348,7 @@ public class MWMActivity extends NvEventQueueActivity
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT &&
BuildConfig.IS_PRO &&
(Utils.isAppInstalled(Constants.Package.MWM_LITE_PACKAGE) || Utils.isAppInstalled(Constants.Package.MWM_SAMSUNG_PACKAGE)))
(Utils.isPackageInstalled(Constants.Package.MWM_LITE_PACKAGE) || Utils.isPackageInstalled(Constants.Package.MWM_SAMSUNG_PACKAGE)))
{
if (!mPathManager.containsLiteMapsOnSdcard())
return;
@ -743,9 +744,15 @@ public class MWMActivity extends NvEventQueueActivity
@Override
public void onClick(View v)
{
final Intent it = new Intent(Intent.ACTION_VIEW);
it.setData(Uri.parse(ad.getAppUrl()));
startActivity(it);
final String appPackage = ad.getAppPackage();
if (!TextUtils.isEmpty(appPackage) && Utils.isPackageInstalled(appPackage))
Utils.launchPackage(MWMActivity.this, appPackage);
else
{
final Intent it = new Intent(Intent.ACTION_VIEW);
it.setData(Uri.parse(ad.getAppUrl()));
startActivity(it);
}
}
});
mVerticalToolbar.addView(view, startAdMenuPosition++);

View file

@ -28,6 +28,7 @@ public class Constants
public static final String DATA_SCHEME_FILE = "file";
public static final String MENU_ADS_JSON = "http://application.server/android/features.json";
public static final String MENU_ADS_JSON_TEST = "http://application.server/android/test.json";
private Url() {}
}

View file

@ -193,7 +193,7 @@ public class Utils
return args;
}
public static boolean isAppInstalled(String packageUri)
public static boolean isPackageInstalled(String packageUri)
{
PackageManager pm = MWMApplication.get().getPackageManager();
boolean installed;
@ -208,6 +208,14 @@ public class Utils
return installed;
}
public static void launchPackage(Activity activity, String appPackage)
{
final Intent intent = activity.getPackageManager().getLaunchIntentForPackage(appPackage);
if (intent != null)
activity.startActivity(intent);
}
public static boolean isIntentAvailable(Intent intent)
{
PackageManager mgr = MWMApplication.get().getPackageManager();