[Android] VLC install check facilities in extensions SDK

Geoffrey Métais git at videolan.org
Wed Feb 3 19:01:16 CET 2016


vlc-android | branch: dialog | Geoffrey Métais <geoffrey.metais at gmail.com> | Tue Feb  2 17:47:08 2016 +0100| [2b8c54b2189507eae18b4dc19e1f472218e4b497] | committer: Geoffrey Métais

VLC install check facilities in extensions SDK

> https://code.videolan.org/videolan/vlc-android/commit/2b8c54b2189507eae18b4dc19e1f472218e4b497
---

 api/src/main/AndroidManifest.xml                   |  2 ++
 .../vlc/extensions/api/WarningActivity.java        | 15 ++++++++++++
 .../videolan/vlc/extensions/api/tools/Dialogs.java | 20 ++++++++++++++++
 .../videolan/vlc/extensions/api/tools/Helpers.java | 27 ++++++++++++++++++++++
 api/src/main/res/values/strings.xml                |  2 ++
 5 files changed, 66 insertions(+)

diff --git a/api/src/main/AndroidManifest.xml b/api/src/main/AndroidManifest.xml
index 887ccdf..08aa4b1 100644
--- a/api/src/main/AndroidManifest.xml
+++ b/api/src/main/AndroidManifest.xml
@@ -27,6 +27,8 @@
     <application android:allowBackup="true" android:label="@string/app_name"
         android:supportsRtl="true">
 
+      <activity android:name="org.videolan.vlc.extensions.api.WarningActivity"
+        android:theme="@style/TransparentTheme" />
     </application>
 
 </manifest>
diff --git a/api/src/main/java/org/videolan/vlc/extensions/api/WarningActivity.java b/api/src/main/java/org/videolan/vlc/extensions/api/WarningActivity.java
new file mode 100644
index 0000000..832e2d4
--- /dev/null
+++ b/api/src/main/java/org/videolan/vlc/extensions/api/WarningActivity.java
@@ -0,0 +1,15 @@
+package org.videolan.vlc.extensions.api;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+import org.videolan.vlc.extensions.api.tools.Dialogs;
+
+public class WarningActivity extends Activity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Dialogs.showInstallVlc(this);
+    }
+}
diff --git a/api/src/main/java/org/videolan/vlc/extensions/api/tools/Dialogs.java b/api/src/main/java/org/videolan/vlc/extensions/api/tools/Dialogs.java
index a3c14c8..6fd905b 100644
--- a/api/src/main/java/org/videolan/vlc/extensions/api/tools/Dialogs.java
+++ b/api/src/main/java/org/videolan/vlc/extensions/api/tools/Dialogs.java
@@ -1,8 +1,10 @@
 package org.videolan.vlc.extensions.api.tools;
 
+import android.app.Activity;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.net.Uri;
 import android.provider.Settings;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
@@ -89,4 +91,22 @@ public class Dialogs {
                     }
                 }, null);
     }
+
+    public static AlertDialog showInstallVlc(@NonNull final Activity activity) {
+        return showAlertDialog(activity, R.string.vlc_error_title, R.string.vlc_error_message,
+                new DialogInterface.OnCancelListener() {
+                    @Override
+                    public void onCancel(DialogInterface dialog) {
+                        dialog.dismiss();
+                        activity.finish();
+                    }
+                }, new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=org.videolan.vlc")));
+                        dialog.dismiss();
+                        activity.finish();
+                    }
+                }, null);
+    }
 }
diff --git a/api/src/main/java/org/videolan/vlc/extensions/api/tools/Helpers.java b/api/src/main/java/org/videolan/vlc/extensions/api/tools/Helpers.java
new file mode 100644
index 0000000..0fabfe8
--- /dev/null
+++ b/api/src/main/java/org/videolan/vlc/extensions/api/tools/Helpers.java
@@ -0,0 +1,27 @@
+package org.videolan.vlc.extensions.api.tools;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+
+import org.videolan.vlc.extensions.api.WarningActivity;
+
+public class Helpers {
+
+    /**
+     * Helper method to check if VLC is installed on device. If not, shows an AlertDialog and offers
+     * the user to install it from the Play Store.
+     * @param context A simple context reference
+     * @return true is VLC is installed, false if not.
+     */
+    public static boolean checkVlc(Context context) {
+        PackageManager pm = context.getPackageManager();
+        try {
+            pm.getPackageInfo("org.videolan.vlc", 0);
+            return true;
+        } catch (PackageManager.NameNotFoundException e) {
+            context.startActivity(new Intent(context, WarningActivity.class));
+            return false;
+        }
+    }
+}
diff --git a/api/src/main/res/values/strings.xml b/api/src/main/res/values/strings.xml
index 86bf7e7..64d68c6 100644
--- a/api/src/main/res/values/strings.xml
+++ b/api/src/main/res/values/strings.xml
@@ -2,4 +2,6 @@
   <string name="app_name">VLC extension library</string>
   <string name="network_error_title">No Internet connection</string>
   <string name="network_error_message">This extension needs your device to be connected to internet</string>
+  <string name="vlc_error_title">VLC is not installed</string>
+  <string name="vlc_error_message">This feature needs VLC application to be installed on your device</string>
 </resources>



More information about the Android mailing list