summaryrefslogtreecommitdiff
path: root/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java')
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java79
1 files changed, 77 insertions, 2 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java
index c2fe90a1..efef731d 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java
@@ -2,13 +2,23 @@ package org.fox.ttrss;
import android.annotation.SuppressLint;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Intent;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.support.customtabs.CustomTabsCallback;
+import android.support.customtabs.CustomTabsClient;
+import android.support.customtabs.CustomTabsIntent;
+import android.support.customtabs.CustomTabsServiceConnection;
+import android.support.customtabs.CustomTabsSession;
import android.support.v7.app.ActionBarActivity;
-import android.util.DisplayMetrics;
import android.util.Log;
+import android.util.TypedValue;
import android.view.Display;
import android.widget.Toast;
@@ -42,6 +52,21 @@ public class CommonActivity extends ActionBarActivity implements SharedPreferenc
private String m_theme;
private boolean m_needRestart;
+ protected CustomTabsClient m_customTabClient;
+ protected CustomTabsServiceConnection m_customTabServiceConnection = new CustomTabsServiceConnection() {
+ @Override
+ public void onCustomTabsServiceConnected(ComponentName componentName, CustomTabsClient customTabsClient) {
+ m_customTabClient = customTabsClient;
+
+ m_customTabClient.warmup(0);
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName componentName) {
+ m_customTabClient = null;
+ }
+ };
+
protected SharedPreferences m_prefs;
protected void setSmallScreen(boolean smallScreen) {
@@ -85,7 +110,7 @@ public class CommonActivity extends ActionBarActivity implements SharedPreferenc
@Override
public void onResume() {
super.onResume();
-
+
if (m_needRestart) {
Log.d(TAG, "restart requested");
@@ -96,6 +121,11 @@ public class CommonActivity extends ActionBarActivity implements SharedPreferenc
@Override
public void onDestroy() {
+
+ if (m_customTabServiceConnection != null) {
+ unbindService(m_customTabServiceConnection);
+ }
+
super.onDestroy();
}
@@ -114,6 +144,8 @@ public class CommonActivity extends ActionBarActivity implements SharedPreferenc
m_theme = m_prefs.getString("theme", CommonActivity.THEME_DEFAULT);
}
+ CustomTabsClient.bindCustomTabsService(this, "com.android.chrome", m_customTabServiceConnection);
+
super.onCreate(savedInstanceState);
}
@@ -172,5 +204,48 @@ public class CommonActivity extends ActionBarActivity implements SharedPreferenc
m_needRestart = Arrays.asList(filter).indexOf(key) != -1;
}
+ private CustomTabsSession getCustomTabSession() {
+ return m_customTabClient.newSession(new CustomTabsCallback() {
+ @Override
+ public void onNavigationEvent(int navigationEvent, Bundle extras) {
+ super.onNavigationEvent(navigationEvent, extras);
+ }
+ });
+ }
+
+ // uses chrome custom tabs when available
+ public void openUri(Uri uri) {
+ if (m_customTabClient != null) {
+
+ TypedValue tvBackground = new TypedValue();
+ getTheme().resolveAttribute(R.attr.colorPrimary, tvBackground, true);
+
+ CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(getCustomTabSession());
+
+ builder.setStartAnimations(this, R.anim.slide_in_right, R.anim.slide_out_left);
+ builder.setExitAnimations(this, R.anim.slide_in_left, R.anim.slide_out_right);
+
+ builder.setToolbarColor(tvBackground.data);
+
+ Intent shareIntent = new Intent(Intent.ACTION_SEND);
+ shareIntent.setType("text/plain");
+ shareIntent.putExtra(Intent.EXTRA_SUBJECT, uri.toString());
+ shareIntent.putExtra(Intent.EXTRA_TEXT, uri.toString());
+
+ PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, shareIntent, 0);
+
+ builder.setActionButton(BitmapFactory.decodeResource(getResources(), R.drawable.ic_share),
+ getString(R.string.share_article), pendingIntent);
+
+ CustomTabsIntent intent = builder.build();
+
+ intent.launchUrl(this, uri);
+ } else {
+ Intent intent = new Intent(Intent.ACTION_VIEW, uri);
+
+ startActivity(intent);
+ }
+ }
+
}