summaryrefslogtreecommitdiff
path: root/app/src/main/java/com/javispedro/rempe/MainActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/javispedro/rempe/MainActivity.java')
-rw-r--r--app/src/main/java/com/javispedro/rempe/MainActivity.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/app/src/main/java/com/javispedro/rempe/MainActivity.java b/app/src/main/java/com/javispedro/rempe/MainActivity.java
index 77caa96..b81b0ba 100644
--- a/app/src/main/java/com/javispedro/rempe/MainActivity.java
+++ b/app/src/main/java/com/javispedro/rempe/MainActivity.java
@@ -2,6 +2,7 @@ package com.javispedro.rempe;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
@@ -20,6 +21,8 @@ import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.dsi.ant.plugins.antplus.pcc.defines.RequestAccessResult;
+import com.dsi.ant.plugins.antplus.pccbase.AntPluginPcc;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
@@ -107,6 +110,12 @@ public class MainActivity extends AppCompatActivity {
case R.id.action_settings:
startActivity(new Intent(this, SettingsActivity.class));
return true;
+ case R.id.action_open_antplus_plugin_manager:
+ if (!AntPluginPcc.startPluginManagerActivity(this)) {
+ Log.e(TAG, "plugin manager not found");
+ showDependencyRequiredMsg("ANT+ plugin manager", "com.dsi.ant.plugins.antplus");
+ }
+ return true;
}
return super.onOptionsItemSelected(item);
@@ -159,6 +168,12 @@ public class MainActivity extends AppCompatActivity {
mSearchDevice.setObserver(null);
mSearchDevice = null; // Ownership of mSearchDevice passed to addDevice below
runOnUiThread(() -> addDevice(device));
+ } else if (result == RequestAccessResult.DEPENDENCY_NOT_INSTALLED) {
+ final String dependency = AntPluginPcc.getMissingDependencyName();
+ final String packageName = AntPluginPcc.getMissingDependencyPackageName();
+ runOnUiThread(() -> {
+ showDependencyRequiredMsg(dependency, packageName);
+ });
} else if (result != RequestAccessResult.USER_CANCELLED) {
runOnUiThread(() -> {
final String resultText = Device.connectionRequestAccessResultToString(MainActivity.this, result);
@@ -193,6 +208,23 @@ public class MainActivity extends AppCompatActivity {
}
};
+ public void showDependencyRequiredMsg(String name, String packageName) {
+ Log.d(TAG, "showDependencyRequiredMsg for " + name + " (" + packageName + ")");
+ new MaterialAlertDialogBuilder(this)
+ .setTitle(R.string.antplus_required_title)
+ .setMessage(getString(R.string.antplus_required_msg, name))
+ .setPositiveButton(R.string.antplus_required_go_to_store, (dialog, which) -> {
+ dialog.dismiss();
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.setData(Uri.parse("market://details?id=" + packageName));
+ startActivity(intent);
+ })
+ .setNeutralButton(R.string.antplus_required_close, (dialog, which) -> {
+ dialog.dismiss();
+ })
+ .show();
+ }
+
public void searchForNewDevice() {
if (mSearchDevice != null) {
mSearchDevice.close();