mirror of
https://github.com/CatimaLoyalty/Android.git
synced 2026-04-08 01:17:54 -04:00
Merge pull request #163 from brarcher/shortcut
Remove support for adding shortcuts from within the app
This commit is contained in:
@@ -8,8 +8,6 @@
|
||||
android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||
<uses-permission
|
||||
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission
|
||||
android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.camera"
|
||||
|
||||
@@ -43,9 +43,6 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
|
||||
TextView storeFieldView;
|
||||
EditText noteFieldEdit;
|
||||
TextView noteFieldView;
|
||||
CheckBox shortcutCheckbox;
|
||||
View shortcutBorder;
|
||||
View shortcutTablerow;
|
||||
TextView cardIdFieldView;
|
||||
View cardIdDivider;
|
||||
View cardIdTableRow;
|
||||
@@ -99,9 +96,6 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
|
||||
storeFieldView = (TextView) findViewById(R.id.storeNameView);
|
||||
noteFieldEdit = (EditText) findViewById(R.id.noteEdit);
|
||||
noteFieldView = (TextView) findViewById(R.id.noteView);
|
||||
shortcutCheckbox = (CheckBox) findViewById(R.id.shortcutCheckbox);
|
||||
shortcutBorder = findViewById(R.id.shortcutBorder);
|
||||
shortcutTablerow = findViewById(R.id.shortcutTablerow);
|
||||
cardIdFieldView = (TextView) findViewById(R.id.cardIdView);
|
||||
cardIdDivider = findViewById(R.id.cardIdDivider);
|
||||
cardIdTableRow = findViewById(R.id.cardIdTableRow);
|
||||
@@ -206,9 +200,6 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
|
||||
noteFieldView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
shortcutBorder.setVisibility(viewLoyaltyCard ? View.GONE : View.VISIBLE);
|
||||
shortcutTablerow.setVisibility(viewLoyaltyCard ? View.GONE : View.VISIBLE);
|
||||
|
||||
if(cardIdFieldView.getText().length() > 0 && barcodeTypeField.getText().length() > 0)
|
||||
{
|
||||
String formatString = barcodeTypeField.getText().toString();
|
||||
@@ -302,7 +293,6 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
|
||||
{
|
||||
String store = storeFieldEdit.getText().toString();
|
||||
String note = noteFieldEdit.getText().toString();
|
||||
boolean shouldAddShortcut = shortcutCheckbox.isChecked();
|
||||
String cardId = cardIdFieldView.getText().toString();
|
||||
String barcodeType = barcodeTypeField.getText().toString();
|
||||
|
||||
@@ -328,39 +318,9 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
|
||||
loyaltyCardId = (int)db.insertLoyaltyCard(store, note, cardId, barcodeType);
|
||||
}
|
||||
|
||||
if(shouldAddShortcut)
|
||||
{
|
||||
addShortcut(loyaltyCardId, store);
|
||||
}
|
||||
|
||||
finish();
|
||||
}
|
||||
|
||||
private void addShortcut(int id, String name)
|
||||
{
|
||||
Intent shortcutIntent = new Intent(this, LoyaltyCardViewActivity.class);
|
||||
shortcutIntent.setAction(Intent.ACTION_MAIN);
|
||||
// Prevent instances of the view activity from piling up; if one exists let this
|
||||
// one replace it.
|
||||
shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt("id", id);
|
||||
bundle.putBoolean("view", true);
|
||||
shortcutIntent.putExtras(bundle);
|
||||
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
|
||||
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);
|
||||
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource
|
||||
.fromContext(this, R.mipmap.ic_launcher));
|
||||
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
|
||||
// Do not duplicate the shortcut if it is already there
|
||||
intent.putExtra("duplicate", false);
|
||||
getApplicationContext().sendBroadcast(intent);
|
||||
|
||||
Toast.makeText(this, R.string.addedShortcut, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu)
|
||||
{
|
||||
|
||||
@@ -146,55 +146,6 @@
|
||||
android:background="@color/inputBorder" />
|
||||
</TableRow>
|
||||
|
||||
<!-- Add Shortcut -->
|
||||
<View
|
||||
android:id="@+id/shortcutBorder"
|
||||
android:layout_height="@dimen/inputBorderThickness"
|
||||
android:layout_width="match_parent"
|
||||
android:background="@color/inputBorder" />
|
||||
<TableRow
|
||||
android:id="@+id/shortcutTablerow"
|
||||
android:background="@color/inputBackground"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<View
|
||||
android:gravity="start"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="@dimen/inputBorderThickness"
|
||||
android:background="@color/inputBorder" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_weight="1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingRight="@dimen/inputPadding"
|
||||
android:paddingEnd="@dimen/inputPadding">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/shortcutField"
|
||||
android:text="@string/addShortcut"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:textSize="@dimen/inputSize"
|
||||
android:padding="@dimen/inputPadding"
|
||||
android:layout_alignParentStart="true"/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/shortcutCheckbox"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:padding="@dimen/inputPadding"
|
||||
android:textSize="@dimen/inputSize"
|
||||
android:layout_toEndOf="@id/shortcutField"/>
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:gravity="end"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="@dimen/inputBorderThickness"
|
||||
android:background="@color/inputBorder" />
|
||||
</TableRow>
|
||||
|
||||
<!-- Card ID -->
|
||||
<View
|
||||
android:id="@+id/cardIdDivider"
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
|
||||
<string name="storeName">Store</string>
|
||||
<string name="note">Note</string>
|
||||
<string name="addShortcut">Add to Home Screen</string>
|
||||
<string name="cardId">Card ID</string>
|
||||
<string name="barcodeType">Barcode Type</string>
|
||||
|
||||
|
||||
@@ -89,7 +89,6 @@ public class LoyaltyCardViewActivityTest
|
||||
*/
|
||||
private void saveLoyaltyCardWithArguments(final Activity activity,
|
||||
final String store, final String note,
|
||||
final boolean addShortcut,
|
||||
final String cardId,
|
||||
final String barcodeType,
|
||||
boolean creatingNewCard)
|
||||
@@ -106,25 +105,18 @@ public class LoyaltyCardViewActivityTest
|
||||
|
||||
final EditText storeField = (EditText) activity.findViewById(R.id.storeNameEdit);
|
||||
final EditText noteField = (EditText) activity.findViewById(R.id.noteEdit);
|
||||
final CheckBox shortcutCheckbox = (CheckBox) activity.findViewById(R.id.shortcutCheckbox);
|
||||
final TextView cardIdField = (TextView) activity.findViewById(R.id.cardIdView);
|
||||
final TextView barcodeTypeField = (TextView) activity.findViewById(R.id.barcodeType);
|
||||
|
||||
storeField.setText(store);
|
||||
noteField.setText(note);
|
||||
shortcutCheckbox.setChecked(addShortcut);
|
||||
cardIdField.setText(cardId);
|
||||
barcodeTypeField.setText(barcodeType);
|
||||
|
||||
ShortcutAddedReceiver shortcutAddedReceiver = new ShortcutAddedReceiver();
|
||||
shortcutAddedReceiver.registerReceiver(activity);
|
||||
|
||||
assertEquals(false, activity.isFinishing());
|
||||
shadowOf(activity).clickMenuItem(R.id.action_save);
|
||||
assertEquals(true, activity.isFinishing());
|
||||
|
||||
shortcutAddedReceiver.unregisterReceiver(activity);
|
||||
|
||||
assertEquals(1, db.getLoyaltyCardCount());
|
||||
|
||||
LoyaltyCard card = db.getLoyaltyCard(1);
|
||||
@@ -132,28 +124,6 @@ public class LoyaltyCardViewActivityTest
|
||||
assertEquals(note, card.note);
|
||||
assertEquals(cardId, card.cardId);
|
||||
assertEquals(barcodeType, card.barcodeType);
|
||||
|
||||
Intent shortcutRequest = shortcutAddedReceiver.lastRequest();
|
||||
|
||||
if(addShortcut)
|
||||
{
|
||||
assertNotNull(shortcutRequest);
|
||||
|
||||
String name = shortcutRequest.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);
|
||||
assertEquals(card.store, name);
|
||||
|
||||
Intent startIntent = shortcutRequest.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT);
|
||||
assertNotNull(startIntent);
|
||||
Bundle startBundle = startIntent.getExtras();
|
||||
assertNotNull(startBundle);
|
||||
|
||||
assertEquals(card.id, startBundle.getInt("id", -1));
|
||||
assertEquals(true, startBundle.getBoolean("view", false));
|
||||
}
|
||||
else
|
||||
{
|
||||
assertNull(shortcutRequest);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -216,8 +186,6 @@ public class LoyaltyCardViewActivityTest
|
||||
checkFieldProperties(activity, R.id.storeNameEdit, editVisibility, store);
|
||||
checkFieldProperties(activity, R.id.storeNameView, viewVisibility, store);
|
||||
checkFieldProperties(activity, R.id.noteEdit, editVisibility, note);
|
||||
checkFieldProperties(activity, R.id.shortcutBorder, editVisibility, null);
|
||||
checkFieldProperties(activity, R.id.shortcutTablerow, editVisibility, null);
|
||||
checkFieldProperties(activity, R.id.noteView, viewVisibility, note);
|
||||
checkFieldProperties(activity, R.id.cardIdView, View.VISIBLE, cardId);
|
||||
checkFieldProperties(activity, R.id.cardIdDivider, cardId.isEmpty() ? View.GONE : View.VISIBLE, null);
|
||||
@@ -308,30 +276,7 @@ public class LoyaltyCardViewActivityTest
|
||||
checkAllFields(activity, ViewMode.ADD_CARD, "", "", BARCODE_DATA, BARCODE_TYPE);
|
||||
|
||||
// Save and check the gift card
|
||||
saveLoyaltyCardWithArguments(activity, "store", "note", false, BARCODE_DATA, BARCODE_TYPE, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void startWithoutParametersCaptureBarcodeCreateLoyaltyCardSaveShortcut() throws IOException
|
||||
{
|
||||
registerMediaStoreIntentHandler();
|
||||
|
||||
ActivityController activityController = Robolectric.buildActivity(LoyaltyCardViewActivity.class).create();
|
||||
activityController.start();
|
||||
activityController.visible();
|
||||
activityController.resume();
|
||||
|
||||
Activity activity = (Activity)activityController.get();
|
||||
|
||||
checkAllFields(activity, ViewMode.ADD_CARD, "", "", "", "");
|
||||
|
||||
// Complete barcode capture successfully
|
||||
captureBarcodeWithResult(activity, R.id.captureButton, true);
|
||||
|
||||
checkAllFields(activity, ViewMode.ADD_CARD, "", "", BARCODE_DATA, BARCODE_TYPE);
|
||||
|
||||
// Save and check the gift card
|
||||
saveLoyaltyCardWithArguments(activity, "store", "note", true, BARCODE_DATA, BARCODE_TYPE, true);
|
||||
saveLoyaltyCardWithArguments(activity, "store", "note", BARCODE_DATA, BARCODE_TYPE, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
package protect.card_locker;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
|
||||
public class ShortcutAddedReceiver extends BroadcastReceiver
|
||||
{
|
||||
public static final String SHORTCUT_ADD_REQUEST = "com.android.launcher.action.INSTALL_SHORTCUT";
|
||||
|
||||
private Intent _request = null;
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent)
|
||||
{
|
||||
_request = intent;
|
||||
}
|
||||
|
||||
public void registerReceiver(Context context)
|
||||
{
|
||||
context.registerReceiver(this, new IntentFilter(SHORTCUT_ADD_REQUEST));
|
||||
}
|
||||
|
||||
public void unregisterReceiver(Context context)
|
||||
{
|
||||
context.unregisterReceiver(this);
|
||||
}
|
||||
|
||||
public Intent lastRequest()
|
||||
{
|
||||
return _request;
|
||||
}
|
||||
|
||||
public void reset()
|
||||
{
|
||||
_request = null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user