From f81ff8591b18182d01010f7bc557cca161719351 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Thu, 26 Jan 2017 17:18:43 +0100 Subject: [PATCH] Pebble: add a FAB in App Manager which launches a file manager to chose a file This is similar to #247 but simpler and using a FAB, also it explicitly targets our Activity instead of allowing to open a video in a video player which using this feature Also suggested in #520 --- .../appmanager/AppManagerActivity.java | 29 ++++++++++++++++++- .../main/res/layout/activity_appmanager.xml | 11 ++----- .../layout/activity_fragmentappmanager.xml | 13 +++++++++ 3 files changed, 43 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AppManagerActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AppManagerActivity.java index d464d032..92a1a97f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AppManagerActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AppManagerActivity.java @@ -1,16 +1,19 @@ package nodomain.freeyourgadget.gadgetbridge.activities.appmanager; +import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; +import android.support.design.widget.FloatingActionButton; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.NavUtils; import android.support.v4.content.LocalBroadcastManager; import android.support.v4.view.ViewPager; import android.view.MenuItem; +import android.view.View; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,6 +31,7 @@ import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.activities.AbstractFragmentPagerAdapter; import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBFragmentActivity; +import nodomain.freeyourgadget.gadgetbridge.activities.FwAppInstallerActivity; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.util.FileUtils; @@ -35,6 +39,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.FileUtils; public class AppManagerActivity extends AbstractGBFragmentActivity { private static final Logger LOG = LoggerFactory.getLogger(AbstractAppManagerFragment.class); + private int READ_REQUEST_CODE = 42; private GBDevice mGBDevice = null; @@ -68,6 +73,18 @@ public class AppManagerActivity extends AbstractGBFragmentActivity { throw new IllegalArgumentException("Must provide a device when invoking this activity"); } + FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); + assert fab != null; + fab.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); + intent.addCategory(Intent.CATEGORY_OPENABLE); + intent.setType("*/*"); + startActivityForResult(intent, READ_REQUEST_CODE); + } + }); + IntentFilter filterLocal = new IntentFilter(); filterLocal.addAction(GBApplication.ACTION_QUIT); filterLocal.addAction(GBDevice.ACTION_DEVICE_CHANGED); @@ -93,7 +110,7 @@ public class AppManagerActivity extends AbstractGBFragmentActivity { public class SectionsPagerAdapter extends AbstractFragmentPagerAdapter { - public SectionsPagerAdapter(FragmentManager fm) { + SectionsPagerAdapter(FragmentManager fm) { super(fm); } @@ -179,6 +196,16 @@ public class AppManagerActivity extends AbstractGBFragmentActivity { return uuids; } + @Override + public void onActivityResult(int requestCode, int resultCode, Intent resultData) { + if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) { + Intent startIntent = new Intent(AppManagerActivity.this, FwAppInstallerActivity.class); + startIntent.setAction(Intent.ACTION_VIEW); + startIntent.setDataAndType(resultData.getData(), null); + startActivity(startIntent); + } + } + @Override protected void onDestroy() { LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver); diff --git a/app/src/main/res/layout/activity_appmanager.xml b/app/src/main/res/layout/activity_appmanager.xml index bdc6317c..bf304a27 100644 --- a/app/src/main/res/layout/activity_appmanager.xml +++ b/app/src/main/res/layout/activity_appmanager.xml @@ -1,17 +1,10 @@ - - - - - - - + diff --git a/app/src/main/res/layout/activity_fragmentappmanager.xml b/app/src/main/res/layout/activity_fragmentappmanager.xml index 639a58f7..d32ada66 100644 --- a/app/src/main/res/layout/activity_fragmentappmanager.xml +++ b/app/src/main/res/layout/activity_fragmentappmanager.xml @@ -2,6 +2,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + xmlns:app="http://schemas.android.com/apk/res-auto" android:paddingBottom="0px" android:paddingLeft="0px" android:paddingRight="0px" @@ -28,5 +29,17 @@ +