diff options
Diffstat (limited to 'OpenKeychain/src/main/java')
25 files changed, 200 insertions, 193 deletions
| diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/CertifyResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/CertifyResult.java index 582ed2fc8..0a0e63330 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/CertifyResult.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/CertifyResult.java @@ -124,7 +124,7 @@ public class CertifyResult extends InputPendingResult {                      mCertifyError, mCertifyError);          } -        return Notify.createNotify(activity, str, duration, style, new ActionListener() { +        return Notify.create(activity, str, duration, style, new ActionListener() {              @Override              public void onAction() {                  Intent intent = new Intent( diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/DeleteResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/DeleteResult.java index 62197541a..50f49add2 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/DeleteResult.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/DeleteResult.java @@ -116,7 +116,7 @@ public class DeleteResult extends OperationResult {              }          } -        return Notify.createNotify(activity, str, duration, style, new ActionListener() { +        return Notify.create(activity, str, duration, style, new ActionListener() {              @Override              public void onAction() {                  Intent intent = new Intent( diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/ImportKeyResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/ImportKeyResult.java index 2d533ed16..af9f67114 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/ImportKeyResult.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/ImportKeyResult.java @@ -179,7 +179,7 @@ public class ImportKeyResult extends OperationResult {              }          } -        return Notify.createNotify(activity, str, duration, style, new ActionListener() { +        return Notify.create(activity, str, duration, style, new ActionListener() {              @Override              public void onAction() {                  Intent intent = new Intent( diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java index d6e71046d..561b8f907 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java @@ -281,10 +281,10 @@ public abstract class OperationResult implements Parcelable {          }          if (getLog() == null || getLog().isEmpty()) { -            return Notify.createNotify(activity, logText, Notify.LENGTH_LONG, style); +            return Notify.create(activity, logText, Notify.LENGTH_LONG, style);          } -        return Notify.createNotify(activity, logText, Notify.LENGTH_LONG, style, +        return Notify.create(activity, logText, Notify.LENGTH_LONG, style,              new ActionListener() {                  @Override                  public void onAction() { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java index 7d8aa993d..204af1b67 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java @@ -241,6 +241,11 @@ public class OpenPgpService extends RemoteService {          try {              boolean asciiArmor = cleartextSign || data.getBooleanExtra(OpenPgpApi.EXTRA_REQUEST_ASCII_ARMOR, true); +            Passphrase passphrase = null; +            if (data.getCharArrayExtra(OpenPgpApi.EXTRA_PASSPHRASE) != null) { +                passphrase = new Passphrase(data.getCharArrayExtra(OpenPgpApi.EXTRA_PASSPHRASE)); +            } +              byte[] nfcSignedHash = data.getByteArrayExtra(OpenPgpApi.EXTRA_NFC_SIGNED_HASH);              if (nfcSignedHash != null) {                  Log.d(Constants.TAG, "nfcSignedHash:" + Hex.toHexString(nfcSignedHash)); @@ -284,6 +289,7 @@ public class OpenPgpService extends RemoteService {              // sign-only              PgpSignEncryptInputParcel pseInput = new PgpSignEncryptInputParcel() +                    .setSignaturePassphrase(passphrase)                      .setEnableAsciiArmorOutput(asciiArmor)                      .setCleartextSignature(cleartextSign)                      .setDetachedSignature(!cleartextSign) @@ -372,6 +378,11 @@ public class OpenPgpService extends RemoteService {                  compressionId = CompressionAlgorithmTags.UNCOMPRESSED;              } +            Passphrase passphrase = null; +            if (data.getCharArrayExtra(OpenPgpApi.EXTRA_PASSPHRASE) != null) { +                passphrase = new Passphrase(data.getCharArrayExtra(OpenPgpApi.EXTRA_PASSPHRASE)); +            } +              // first try to get key ids from non-ambiguous key id extra              long[] keyIds = data.getLongArrayExtra(OpenPgpApi.EXTRA_KEY_IDS);              if (keyIds == null) { @@ -397,7 +408,8 @@ public class OpenPgpService extends RemoteService {              InputData inputData = new InputData(is, inputLength, originalFilename);              PgpSignEncryptInputParcel pseInput = new PgpSignEncryptInputParcel(); -            pseInput.setEnableAsciiArmorOutput(asciiArmor) +            pseInput.setSignaturePassphrase(passphrase) +                    .setEnableAsciiArmorOutput(asciiArmor)                      .setVersionHeader(null)                      .setCompressionId(compressionId)                      .setSymmetricEncryptionAlgorithm(PgpConstants.OpenKeychainSymmetricKeyAlgorithmTags.USE_PREFERRED) @@ -510,6 +522,11 @@ public class OpenPgpService extends RemoteService {                  os = new ParcelFileDescriptor.AutoCloseOutputStream(output);              } +            Passphrase passphrase = null; +            if (data.getCharArrayExtra(OpenPgpApi.EXTRA_PASSPHRASE) != null) { +                passphrase = new Passphrase(data.getCharArrayExtra(OpenPgpApi.EXTRA_PASSPHRASE)); +            } +              String currentPkg = getCurrentCallingPackage();              Set<Long> allowedKeyIds;              if (data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) < 7) { @@ -520,7 +537,6 @@ public class OpenPgpService extends RemoteService {                          KeychainContract.ApiAllowedKeys.buildBaseUri(currentPkg));              } -            Passphrase passphrase = data.getParcelableExtra(OpenPgpApi.EXTRA_PASSPHRASE);              long inputLength = is.available();              InputData inputData = new InputData(is, inputLength); @@ -566,15 +582,16 @@ public class OpenPgpService extends RemoteService {                  }              } else if (pgpResult.success()) {                  Intent result = new Intent(); -                int resultType = OpenPgpApi.RESULT_TYPE_UNENCRYPTED_UNSIGNED;                  OpenPgpSignatureResult signatureResult = pgpResult.getSignatureResult(); +                // TODO: currently RESULT_TYPE_UNENCRYPTED_UNSIGNED is never returned +                // instead an error is returned when no pgp data has been found +                int resultType = OpenPgpApi.RESULT_TYPE_UNENCRYPTED_UNSIGNED;                  if (signatureResult != null) {                      resultType |= OpenPgpApi.RESULT_TYPE_SIGNED;                      if (!signatureResult.isSignatureOnly()) {                          resultType |= OpenPgpApi.RESULT_TYPE_ENCRYPTED;                      } -                    result.putExtra(OpenPgpApi.RESULT_TYPE, resultType);                      result.putExtra(OpenPgpApi.RESULT_SIGNATURE, signatureResult); @@ -594,7 +611,10 @@ public class OpenPgpService extends RemoteService {                          // If signature key is known, return PendingIntent to show key                          result.putExtra(OpenPgpApi.RESULT_INTENT, getShowKeyPendingIntent(signatureResult.getKeyId()));                      } +                } else { +                    resultType |= OpenPgpApi.RESULT_TYPE_ENCRYPTED;                  } +                result.putExtra(OpenPgpApi.RESULT_TYPE, resultType);                  if (data.getIntExtra(OpenPgpApi.EXTRA_API_VERSION, -1) >= 4) {                      OpenPgpMetadata metadata = pgpResult.getDecryptMetadata(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/RemoteServiceActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/RemoteServiceActivity.java index 2c5c78161..e8c3e4511 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/RemoteServiceActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/RemoteServiceActivity.java @@ -186,7 +186,7 @@ public class RemoteServiceActivity extends BaseActivity {                                  // user needs to select a key if it has explicitly requested (None is only allowed for new accounts)                                  if (mUpdateExistingAccount && mAccSettingsFragment.getAccSettings().getKeyId() == Constants.key.none) { -                                    Notify.showNotify(RemoteServiceActivity.this, getString(R.string.api_register_error_select_key), Notify.Style.ERROR); +                                    Notify.create(RemoteServiceActivity.this, getString(R.string.api_register_error_select_key), Notify.Style.ERROR).show();                                  } else {                                      if (mUpdateExistingAccount) {                                          Uri baseUri = KeychainContract.ApiAccounts.buildBaseUri(packageName); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentServiceHandler.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentServiceHandler.java index 05d80b4e0..794e660bd 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentServiceHandler.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentServiceHandler.java @@ -131,9 +131,9 @@ public class KeychainIntentServiceHandler extends Handler {                  // show error from service                  if (data.containsKey(DATA_ERROR)) { -                    Notify.showNotify(mActivity, +                    Notify.create(mActivity,                              mActivity.getString(R.string.error_message, data.getString(DATA_ERROR)), -                            Notify.Style.ERROR); +                            Notify.Style.ERROR).show();                  }                  break; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java index a42c52e63..b98fd90f1 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CertifyKeyFragment.java @@ -164,8 +164,8 @@ public class CertifyKeyFragment extends CryptoOperationFragment              @Override              public void onClick(View v) {                  if (mSignMasterKeyId == Constants.key.none) { -                    Notify.showNotify(getActivity(), getString(R.string.select_key_to_certify), -                            Notify.Style.ERROR); +                    Notify.create(getActivity(), getString(R.string.select_key_to_certify), +                            Notify.Style.ERROR).show();                  } else {                      cryptoOperation(null);                  } @@ -313,8 +313,8 @@ public class CertifyKeyFragment extends CryptoOperationFragment          // Bail out if there is not at least one user id selected          ArrayList<CertifyAction> certifyActions = mUserIdsAdapter.getSelectedCertifyActions();          if (certifyActions.isEmpty()) { -            Notify.showNotify(getActivity(), "No identities selected!", -                    Notify.Style.ERROR); +            Notify.create(getActivity(), "No identities selected!", +                    Notify.Style.ERROR).show();              return;          } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java index 75f49a426..cbe3eecd4 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java @@ -277,8 +277,8 @@ public class CreateKeyFinalFragment extends Fragment {                      // TODO: upload operation needs a result!                      // TODO: then combine these results                      //if (result.getResult() == OperationResultParcel.RESULT_OK) { -                    //Notify.showNotify(getActivity(), R.string.key_send_success, -                    //Notify.Style.INFO); +                    //Notify.create(getActivity(), R.string.key_send_success, +                    //Notify.Style.OK).show();                      Intent data = new Intent();                      data.putExtra(OperationResult.EXTRA_RESULT, saveKeyResult); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesFragment.java index 71832daa5..a92fb596c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFilesFragment.java @@ -139,7 +139,7 @@ public class DecryptFilesFragment extends DecryptFragment {      private void decryptAction() {          if (mInputUri == null) { -            Notify.showNotify(getActivity(), R.string.no_file_selected, Notify.Style.ERROR); +            Notify.create(getActivity(), R.string.no_file_selected, Notify.Style.ERROR).show();              return;          } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java index 1e9e7bcb1..bc2ec014a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextActivity.java @@ -161,7 +161,7 @@ public class DecryptTextActivity extends BaseActivity {                  if (sharedText != null) {                      loadFragment(savedInstanceState, sharedText);                  } else { -                    Notify.showNotify(this, R.string.error_invalid_data, Notify.Style.ERROR); +                    Notify.create(this, R.string.error_invalid_data, Notify.Style.ERROR).show();                  }              } else {                  Log.e(Constants.TAG, "ACTION_SEND received non-plaintext, this should not happen in this activity!"); @@ -175,7 +175,7 @@ public class DecryptTextActivity extends BaseActivity {              if (extraText != null) {                  loadFragment(savedInstanceState, extraText);              } else { -                Notify.showNotify(this, R.string.error_invalid_data, Notify.Style.ERROR); +                Notify.create(this, R.string.error_invalid_data, Notify.Style.ERROR).show();              }          } else if (ACTION_DECRYPT_FROM_CLIPBOARD.equals(action)) {              Log.d(Constants.TAG, "ACTION_DECRYPT_FROM_CLIPBOARD"); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java index 30cf739fc..80a07214b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptTextFragment.java @@ -132,7 +132,7 @@ public class DecryptTextFragment extends DecryptFragment {      private void copyToClipboard(String text) {          ClipboardReflection.copyToClipboard(getActivity(), text); -        Notify.showNotify(getActivity(), R.string.text_copied_to_clipboard, Notify.Style.INFO); +        Notify.create(getActivity(), R.string.text_copied_to_clipboard, Notify.Style.OK).show();      }      @Override diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java index 45d681308..13fba14e9 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java @@ -529,11 +529,11 @@ public class EditKeyFragment extends CryptoOperationFragment implements      private void returnKeyringParcel() {          if (mSaveKeyringParcel.mAddUserIds.size() == 0) { -            Notify.showNotify(getActivity(), R.string.edit_key_error_add_identity, Notify.Style.ERROR); +            Notify.create(getActivity(), R.string.edit_key_error_add_identity, Notify.Style.ERROR).show();              return;          }          if (mSaveKeyringParcel.mAddSubKeys.size() == 0) { -            Notify.showNotify(getActivity(), R.string.edit_key_error_add_subkey, Notify.Style.ERROR); +            Notify.create(getActivity(), R.string.edit_key_error_add_subkey, Notify.Style.ERROR).show();              return;          } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java index eef11b855..ac54ebff6 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java @@ -302,7 +302,8 @@ public class EncryptFilesActivity extends EncryptActivity implements EncryptActi          // file checks          if (mInputUris.isEmpty()) { -            Notify.showNotify(this, R.string.no_file_selected, Notify.Style.ERROR); +            Notify.create(this, R.string.no_file_selected, Notify.Style.ERROR) +                    .show(getSupportFragmentManager().findFragmentById(R.id.encrypt_file_fragment));              return false;          } else if (mInputUris.size() > 1 && !mShareAfterEncrypt) {              // This should be impossible... @@ -316,11 +317,13 @@ public class EncryptFilesActivity extends EncryptActivity implements EncryptActi              // symmetric encryption checks              if (mPassphrase == null) { -                Notify.showNotify(this, R.string.passphrases_do_not_match, Notify.Style.ERROR); +                Notify.create(this, R.string.passphrases_do_not_match, Notify.Style.ERROR) +                        .show(getSupportFragmentManager().findFragmentById(R.id.encrypt_file_fragment));                  return false;              }              if (mPassphrase.isEmpty()) { -                Notify.showNotify(this, R.string.passphrase_must_not_be_empty, Notify.Style.ERROR); +                Notify.create(this, R.string.passphrase_must_not_be_empty, Notify.Style.ERROR) +                        .show(getSupportFragmentManager().findFragmentById(R.id.encrypt_file_fragment));                  return false;              } @@ -332,7 +335,8 @@ public class EncryptFilesActivity extends EncryptActivity implements EncryptActi              // Files must be encrypted, only text can be signed-only right now              if (!gotEncryptionKeys) { -                Notify.showNotify(this, R.string.select_encryption_key, Notify.Style.ERROR); +                Notify.create(this, R.string.select_encryption_key, Notify.Style.ERROR) +                        .show(getSupportFragmentManager().findFragmentById(R.id.encrypt_file_fragment));                  return false;              }          } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java index 9c9b44511..4ba76d8ea 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java @@ -115,9 +115,9 @@ public class EncryptFilesFragment extends Fragment implements EncryptActivityInt          }          if (mEncryptInterface.getInputUris().contains(inputUri)) { -            Notify.showNotify(getActivity(), +            Notify.create(getActivity(),                      getActivity().getString(R.string.error_file_added_already, FileHelper.getFilename(getActivity(), inputUri)), -                    Notify.Style.ERROR); +                    Notify.Style.ERROR).show(this);              return;          } @@ -153,7 +153,7 @@ public class EncryptFilesFragment extends Fragment implements EncryptActivityInt      private void encryptClicked(boolean share) {          if (mEncryptInterface.getInputUris().isEmpty()) { -            Notify.showNotify(getActivity(), R.string.error_no_file_selected, Notify.Style.ERROR); +            Notify.create(getActivity(), R.string.error_no_file_selected, Notify.Style.ERROR).show(this);              return;          }          if (share) { @@ -169,7 +169,7 @@ public class EncryptFilesFragment extends Fragment implements EncryptActivityInt              mEncryptInterface.startEncrypt(true);          } else {              if (mEncryptInterface.getInputUris().size() > 1) { -                Notify.showNotify(getActivity(), R.string.error_multi_not_supported, Notify.Style.ERROR); +                Notify.create(getActivity(), R.string.error_multi_not_supported, Notify.Style.ERROR).show(this);                  return;              }              showOutputFileDialog(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java index 3047661ad..827418f08 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java @@ -198,8 +198,9 @@ public class EncryptTextActivity extends EncryptActivity implements EncryptActiv              // Copy to clipboard              copyToClipboard(result.getResultBytes());              result.createNotify(EncryptTextActivity.this).show(); -            // Notify.showNotify(EncryptTextActivity.this, -            // R.string.encrypt_sign_clipboard_successful, Notify.Style.INFO); +            // Notify.create(EncryptTextActivity.this, +            // R.string.encrypt_sign_clipboard_successful, Notify.Style.OK) +            // .show(getSupportFragmentManager().findFragmentById(R.id.encrypt_text_fragment));          }      } @@ -280,7 +281,8 @@ public class EncryptTextActivity extends EncryptActivity implements EncryptActiv      protected boolean inputIsValid() {          if (mMessage == null) { -            Notify.showNotify(this, R.string.error_message, Notify.Style.ERROR); +            Notify.create(this, R.string.error_message, Notify.Style.ERROR) +                    .show(getSupportFragmentManager().findFragmentById(R.id.encrypt_text_fragment));              return false;          } @@ -288,11 +290,13 @@ public class EncryptTextActivity extends EncryptActivity implements EncryptActiv              // symmetric encryption checks              if (mPassphrase == null) { -                Notify.showNotify(this, R.string.passphrases_do_not_match, Notify.Style.ERROR); +                Notify.create(this, R.string.passphrases_do_not_match, Notify.Style.ERROR) +                        .show(getSupportFragmentManager().findFragmentById(R.id.encrypt_text_fragment));                  return false;              }              if (mPassphrase.isEmpty()) { -                Notify.showNotify(this, R.string.passphrase_must_not_be_empty, Notify.Style.ERROR); +                Notify.create(this, R.string.passphrase_must_not_be_empty, Notify.Style.ERROR) +                        .show(getSupportFragmentManager().findFragmentById(R.id.encrypt_text_fragment));                  return false;              } @@ -303,7 +307,8 @@ public class EncryptTextActivity extends EncryptActivity implements EncryptActiv                      && mEncryptionKeyIds.length > 0);              if (!gotEncryptionKeys && mSigningKeyId == 0) { -                Notify.showNotify(this, R.string.select_encryption_or_signature_key, Notify.Style.ERROR); +                Notify.create(this, R.string.select_encryption_or_signature_key, Notify.Style.ERROR) +                        .show(getSupportFragmentManager().findFragmentById(R.id.encrypt_text_fragment));                  return false;              }          } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java index d51e2c7fc..9143609ad 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java @@ -26,6 +26,7 @@ import android.os.Messenger;  import android.support.v4.app.Fragment;  import android.view.View;  import android.view.View.OnClickListener; +import android.view.ViewGroup;  import org.sufficientlysecure.keychain.Constants;  import org.sufficientlysecure.keychain.R; @@ -277,7 +278,8 @@ public class ImportKeysActivity extends BaseActivity {      private boolean isFingerprintValid(String fingerprint) {          if (fingerprint == null || fingerprint.length() < 40) { -            Notify.showNotify(this, R.string.import_qr_code_too_short_fingerprint, Notify.Style.ERROR); +            Notify.create(this, R.string.import_qr_code_too_short_fingerprint, Notify.Style.ERROR) +                    .show((ViewGroup) findViewById(R.id.import_snackbar));              return false;          } else {              return true; @@ -329,7 +331,8 @@ public class ImportKeysActivity extends BaseActivity {                          return;                      } -                    result.createNotify(ImportKeysActivity.this).show(); +                    result.createNotify(ImportKeysActivity.this) +                            .show((ViewGroup) findViewById(R.id.import_snackbar));                  }              }          }; @@ -372,7 +375,8 @@ public class ImportKeysActivity extends BaseActivity {                  startService(intent);              } catch (IOException e) {                  Log.e(Constants.TAG, "Problem writing cache file", e); -                Notify.showNotify(this, "Problem writing cache file!", Notify.Style.ERROR); +                Notify.create(this, "Problem writing cache file!", Notify.Style.ERROR) +                        .show((ViewGroup) findViewById(R.id.import_snackbar));              }          } else if (ls instanceof ImportKeysListFragment.CloudLoaderState) {              ImportKeysListFragment.CloudLoaderState sls = (ImportKeysListFragment.CloudLoaderState) ls; @@ -412,7 +416,8 @@ public class ImportKeysActivity extends BaseActivity {              // start service with intent              startService(intent);          } else { -            Notify.showNotify(this, R.string.error_nothing_import, Notify.Style.ERROR); +            Notify.create(this, R.string.error_nothing_import, Notify.Style.ERROR) +                    .show((ViewGroup) findViewById(R.id.import_snackbar));          }      } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java index f8939f3d1..5f1189deb 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java @@ -169,6 +169,22 @@ public class KeyListFragment extends LoaderFragment          mStickyList.setDrawingListUnderStickyHeader(false);          mStickyList.setFastScrollEnabled(true); +        // Adds an empty footer view so that the Floating Action Button won't block content +        // in last few rows. +        View footer = new View(getActivity()); + +        int spacing = (int) android.util.TypedValue.applyDimension( +                android.util.TypedValue.COMPLEX_UNIT_DIP, 72, getResources().getDisplayMetrics() +        ); + +        android.widget.AbsListView.LayoutParams params = new android.widget.AbsListView.LayoutParams( +                android.widget.AbsListView.LayoutParams.MATCH_PARENT, +                spacing +        ); + +        footer.setLayoutParams(params); +        mStickyList.addFooterView(footer, null, false); +          /*           * Multi-selection           */ @@ -369,13 +385,13 @@ public class KeyListFragment extends LoaderFragment      /**       * Show dialog to delete key       * -     * @param hasSecret    must contain whether the list of masterKeyIds contains a secret key or not +     * @param hasSecret must contain whether the list of masterKeyIds contains a secret key or not       */      public void showDeleteKeyDialog(final ActionMode mode, long[] masterKeyIds, boolean hasSecret) {          // Can only work on singular secret keys          if (hasSecret && masterKeyIds.length > 1) { -            Notify.showNotify(getActivity(), R.string.secret_cannot_multiple, -                    Notify.Style.ERROR); +            Notify.create(getActivity(), R.string.secret_cannot_multiple, +                    Notify.Style.ERROR).show();              return;          } @@ -468,21 +484,21 @@ public class KeyListFragment extends LoaderFragment              case R.id.menu_key_list_debug_read:                  try {                      KeychainDatabase.debugBackup(getActivity(), true); -                    Notify.showNotify(getActivity(), "Restored debug_backup.db", Notify.Style.INFO); +                    Notify.create(getActivity(), "Restored debug_backup.db", Notify.Style.OK).show();                      getActivity().getContentResolver().notifyChange(KeychainContract.KeyRings.CONTENT_URI, null);                  } catch (IOException e) {                      Log.e(Constants.TAG, "IO Error", e); -                    Notify.showNotify(getActivity(), "IO Error " + e.getMessage(), Notify.Style.ERROR); +                    Notify.create(getActivity(), "IO Error " + e.getMessage(), Notify.Style.ERROR).show();                  }                  return true;              case R.id.menu_key_list_debug_write:                  try {                      KeychainDatabase.debugBackup(getActivity(), false); -                    Notify.showNotify(getActivity(), "Backup to debug_backup.db completed", Notify.Style.INFO); +                    Notify.create(getActivity(), "Backup to debug_backup.db completed", Notify.Style.OK).show();                  } catch (IOException e) {                      Log.e(Constants.TAG, "IO Error", e); -                    Notify.showNotify(getActivity(), "IO Error: " + e.getMessage(), Notify.Style.ERROR); +                    Notify.create(getActivity(), "IO Error: " + e.getMessage(), Notify.Style.ERROR).show();                  }                  return true; @@ -909,5 +925,4 @@ public class KeyListFragment extends LoaderFragment      } -  } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/QrCodeViewActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/QrCodeViewActivity.java index d3c1d971a..43af07bbe 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/QrCodeViewActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/QrCodeViewActivity.java @@ -80,7 +80,7 @@ public class QrCodeViewActivity extends BaseActivity {                      KeychainContract.KeyRings.FINGERPRINT, ProviderHelper.FIELD_TYPE_BLOB);              if (blob == null) {                  Log.e(Constants.TAG, "key not found!"); -                Notify.showNotify(this, R.string.error_key_not_found, Style.ERROR); +                Notify.create(this, R.string.error_key_not_found, Style.ERROR).show();                  ActivityCompat.finishAfterTransition(QrCodeViewActivity.this);              } @@ -102,7 +102,7 @@ public class QrCodeViewActivity extends BaseActivity {                      });          } catch (ProviderHelper.NotFoundException e) {              Log.e(Constants.TAG, "key not found!", e); -            Notify.showNotify(this, R.string.error_key_not_found, Style.ERROR); +            Notify.create(this, R.string.error_key_not_found, Style.ERROR).show();              ActivityCompat.finishAfterTransition(QrCodeViewActivity.this);          }      } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SafeSlingerActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SafeSlingerActivity.java index d0cea5f05..863aef65f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SafeSlingerActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SafeSlingerActivity.java @@ -205,7 +205,7 @@ public class SafeSlingerActivity extends BaseActivity {                  activity.startService(intent);              } catch (IOException e) {                  Log.e(Constants.TAG, "Problem writing cache file", e); -                Notify.showNotify(activity, "Problem writing cache file!", Notify.Style.ERROR); +                Notify.create(activity, "Problem writing cache file!", Notify.Style.ERROR).show();              }          } else {              // give everything else down to KeyListActivity! diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java index 45ad944c4..484956e6a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java @@ -338,7 +338,7 @@ public class ViewKeyActivity extends BaseActivity implements                  try {                      updateFromKeyserver(mDataUri, mProviderHelper);                  } catch (ProviderHelper.NotFoundException e) { -                    Notify.showNotify(this, R.string.error_key_not_found, Notify.Style.ERROR); +                    Notify.create(this, R.string.error_key_not_found, Notify.Style.ERROR).show();                  }                  return true;              } @@ -449,7 +449,7 @@ public class ViewKeyActivity extends BaseActivity implements                      Constants.Path.APP_DIR_FILE, ((Long) data.get(KeychainContract.KeyRings.HAS_SECRET) != 0)              );          } catch (ProviderHelper.NotFoundException e) { -            Notify.showNotify(this, R.string.error_key_not_found, Notify.Style.ERROR); +            Notify.create(this, R.string.error_key_not_found, Notify.Style.ERROR).show();              Log.e(Constants.TAG, "Key not found", e);          }      } @@ -486,14 +486,14 @@ public class ViewKeyActivity extends BaseActivity implements              String fp = data.getStringExtra(ImportKeysProxyActivity.EXTRA_FINGERPRINT);              if (fp == null) { -                Notify.createNotify(this, "Error scanning fingerprint!", +                Notify.create(this, "Error scanning fingerprint!",                          Notify.LENGTH_LONG, Notify.Style.ERROR).show();                  return;              }              if (mFingerprint.equalsIgnoreCase(fp)) {                  certifyImmediate();              } else { -                Notify.createNotify(this, "Fingerprints did not match!", +                Notify.create(this, "Fingerprints did not match!",                          Notify.LENGTH_LONG, Notify.Style.ERROR).show();              } @@ -519,7 +519,7 @@ public class ViewKeyActivity extends BaseActivity implements      private void encrypt(Uri dataUri, boolean text) {          // If there is no encryption key, don't bother.          if (!mHasEncrypt) { -            Notify.showNotify(this, R.string.error_no_encrypt_subkey, Notify.Style.ERROR); +            Notify.create(this, R.string.error_no_encrypt_subkey, Notify.Style.ERROR).show();              return;          }          try { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvShareFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvShareFragment.java index 29586ae9f..6bd3a9303 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvShareFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyAdvShareFragment.java @@ -199,13 +199,13 @@ public class ViewKeyAdvShareFragment extends LoaderFragment implements                  } else {                      message = getResources().getString(R.string.key_copied_to_clipboard);                  } -                Notify.showNotify(getActivity(), message, Notify.Style.OK); +                Notify.create(getActivity(), message, Notify.Style.OK).show();              } else {                  // Android will fail with android.os.TransactionTooLargeException if key is too big                  // see http://www.lonestarprod.com/?p=34                  if (content.length() >= 86389) { -                    Notify.showNotify(getActivity(), R.string.key_too_big_for_sharing, -                            Notify.Style.ERROR); +                    Notify.create(getActivity(), R.string.key_too_big_for_sharing, +                            Notify.Style.ERROR).show();                      return;                  } @@ -223,10 +223,10 @@ public class ViewKeyAdvShareFragment extends LoaderFragment implements              }          } catch (PgpGeneralException | IOException e) {              Log.e(Constants.TAG, "error processing key!", e); -            Notify.showNotify(getActivity(), R.string.error_key_processing, Notify.Style.ERROR); +            Notify.create(getActivity(), R.string.error_key_processing, Notify.Style.ERROR).show();          } catch (ProviderHelper.NotFoundException e) {              Log.e(Constants.TAG, "key not found!", e); -            Notify.showNotify(getActivity(), R.string.error_key_not_found, Notify.Style.ERROR); +            Notify.create(getActivity(), R.string.error_key_not_found, Notify.Style.ERROR).show();          }      } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/FileDialogFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/FileDialogFragment.java index 7ac85781f..63b6d26ac 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/FileDialogFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/dialog/FileDialogFragment.java @@ -190,7 +190,7 @@ public class FileDialogFragment extends DialogFragment {                          mFile = file;                          mFilename.setText(mFile.getName());                      } else { -                        Notify.showNotify(getActivity(), R.string.no_file_selected, Notify.Style.ERROR); +                        Notify.create(getActivity(), R.string.no_file_selected, Notify.Style.ERROR).show();                      }                  } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java index 9736b5765..3121e02ef 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/Notify.java @@ -18,10 +18,7 @@  package org.sufficientlysecure.keychain.ui.util;  import android.app.Activity; -import android.content.res.Resources;  import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentActivity; -import android.support.v4.app.FragmentManager;  import android.view.View;  import android.view.ViewGroup; @@ -40,135 +37,49 @@ import org.sufficientlysecure.keychain.util.FabContainer;   */  public class Notify { -    public static enum Style {OK, WARN, INFO, ERROR} +    public static enum Style {OK, WARN, ERROR}      public static final int LENGTH_INDEFINITE = 0;      public static final int LENGTH_LONG = 3500; -    /** -     * Shows a simple in-layout notification with the CharSequence given as parameter -     * @param text     Text to show -     * @param style    Notification styling -     */ -    public static void showNotify(final Activity activity, CharSequence text, Style style) { - -        Snackbar bar = getSnackbar(activity) +    public static Showable create(final Activity activity, String text, int duration, Style style, +                                  final ActionListener actionListener, int actionResId) { +        final Snackbar snackbar = Snackbar.with(activity) +                .type(SnackbarType.MULTI_LINE)                  .text(text); -        switch (style) { -            case OK: -                break; -            case WARN: -                bar.textColor(activity.getResources().getColor(R.color.android_orange_light)); -                break; -            case ERROR: -                bar.textColor(activity.getResources().getColor(R.color.android_red_light)); -                break; -        } - -        showSnackbar(activity, bar); - -    } - -    public static Showable createNotify (final Activity activity, int resId, int duration, Style style) { -        final Snackbar bar = getSnackbar(activity) -                .text(resId); -          if (duration == LENGTH_INDEFINITE) { -            bar.duration(SnackbarDuration.LENGTH_INDEFINITE); +            snackbar.duration(SnackbarDuration.LENGTH_INDEFINITE);          } else { -            bar.duration(duration); +            snackbar.duration(duration);          }          switch (style) {              case OK: -                bar.actionColor(activity.getResources().getColor(R.color.android_green_light)); +                snackbar.actionColorResource(R.color.android_green_light);                  break; -            case WARN: -                bar.textColor(activity.getResources().getColor(R.color.android_orange_light)); -                break; -            case ERROR: -                bar.textColor(activity.getResources().getColor(R.color.android_red_light)); -                break; -        } - -        return new Showable () { -            @Override -            public void show() { -                showSnackbar(activity, bar); -            } -        }; -    } - -    public static Showable createNotify(Activity activity, int resId, int duration, Style style, -                                        final ActionListener listener, int resIdAction) { -        return createNotify(activity, activity.getString(resId), duration, style, listener, resIdAction); -    } - -    public static Showable createNotify(Activity activity, String msg, int duration, Style style) { -        return createNotify(activity, msg, duration, style, null, 0); -    } - -    public static Showable createNotify(final Activity activity, String msg, int duration, Style style, -                                        final ActionListener listener, int resIdAction) { - -        final Snackbar bar = getSnackbar(activity) -                .text(msg); - -        if (listener != null) { -            bar.actionLabel(resIdAction); -            bar.actionListener(new ActionClickListener() { -                @Override -                public void onActionClicked(Snackbar snackbar) { -                    listener.onAction(); -                } -            }); -        } - -        if (duration == LENGTH_INDEFINITE) { -            bar.duration(SnackbarDuration.LENGTH_INDEFINITE); -        } else { -            bar.duration(duration); -        } -        switch (style) { -            case OK: -                bar.actionColor(activity.getResources().getColor(R.color.android_green_light)); -                break;              case WARN: -                bar.textColor(activity.getResources().getColor(R.color.android_orange_light)); +                snackbar.textColorResource(R.color.android_orange_light);                  break; +              case ERROR: -                bar.textColor(activity.getResources().getColor(R.color.android_red_light)); +                snackbar.textColorResource(R.color.android_red_light);                  break;          } -        return new Showable () { -            @Override -            public void show() { -                showSnackbar(activity, bar); -            } -        }; - -    } - -    /** -     * Shows a simple in-layout notification with the resource text from given id -     * @param resId    ResourceId of notification text -     * @param style    Notification styling -     * @throws Resources.NotFoundException -     */ -    public static void showNotify(Activity activity, int resId, Style style) throws Resources.NotFoundException { -        showNotify(activity, activity.getResources().getText(resId), style); -    } - -    private static Snackbar getSnackbar(final Activity activity) { -        Snackbar bar = Snackbar.with(activity) -                .type(SnackbarType.MULTI_LINE) -                .duration(SnackbarDuration.LENGTH_LONG); +        if (actionListener != null) { +            snackbar.actionLabel(actionResId) +                    .actionListener(new ActionClickListener() { +                        @Override +                        public void onActionClicked(Snackbar snackbar) { +                            actionListener.onAction(); +                        } +                    }); +        }          if (activity instanceof FabContainer) { -            bar.eventListener(new EventListenerAdapter() { +            snackbar.eventListener(new EventListenerAdapter() {                  @Override                  public void onShow(Snackbar snackbar) {                      ((FabContainer) activity).fabMoveUp(snackbar.getHeight()); @@ -180,37 +91,84 @@ public class Notify {                  }              });          } -        return bar; -    } -    private static void showSnackbar(Activity activity, Snackbar snackbar) { -        if (activity instanceof FragmentActivity) { -            FragmentManager fragmentManager = ((FragmentActivity) activity).getSupportFragmentManager(); +        return new Showable() { +            @Override +            public void show() { +                SnackbarManager.show(snackbar, activity); +            } -            int count = fragmentManager.getBackStackEntryCount(); -            Fragment fragment = fragmentManager.getFragments().get(count > 0 ? count - 1 : 0); +            @Override +            public void show(Fragment fragment) { +                if (fragment != null) { +                    View view = fragment.getView(); + +                    if (view != null && view instanceof ViewGroup) { +                        SnackbarManager.show(snackbar, (ViewGroup) view); +                        return; +                    } +                } -            if (fragment != null) { -                View view = fragment.getView(); +                show(); +            } -                if (view != null) { -                    SnackbarManager.show(snackbar, (ViewGroup) view); +            @Override +            public void show(ViewGroup viewGroup) { +                if (viewGroup != null) { +                    SnackbarManager.show(snackbar, viewGroup);                      return;                  } + +                show();              } -        } +        }; +    } + +    public static Showable create(Activity activity, String text, int duration, Style style) { +        return create(activity, text, duration, style, null, -1); +    } -        SnackbarManager.show(snackbar); +    public static Showable create(Activity activity, String text, Style style) { +        return create(activity, text, LENGTH_LONG, style); +    } + +    public static Showable create(Activity activity, int textResId, int duration, Style style, +                                  ActionListener actionListener, int actionResId) { +        return create(activity, activity.getString(textResId), duration, style, actionListener, actionResId); +    } + +    public static Showable create(Activity activity, int textResId, int duration, Style style) { +        return create(activity, activity.getString(textResId), duration, style); +    } + +    public static Showable create(Activity activity, int textResId, Style style) { +        return create(activity, activity.getString(textResId), style);      }      public interface Showable { + +        /** +         * Shows the notification on the bottom of the Activity. +         */          public void show(); +        /** +         * Shows the notification on the bottom of the Fragment. +         */ +        public void show(Fragment fragment); + +        /** +         * Shows the notification on the given ViewGroup. +         * The viewGroup should be either a RelativeLayout or FrameLayout. +         */ +        public void show(ViewGroup viewGroup); +      }      public interface ActionListener { +          public void onAction();      } -}
\ No newline at end of file +} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/NfcHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/NfcHelper.java index c010ac151..e4e4e4d05 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/NfcHelper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/NfcHelper.java @@ -32,6 +32,7 @@ import android.os.Build;  import android.os.Handler;  import android.os.Message;  import android.provider.Settings; +  import org.sufficientlysecure.keychain.Constants;  import org.sufficientlysecure.keychain.R;  import org.sufficientlysecure.keychain.provider.KeychainContract; @@ -158,13 +159,13 @@ public class NfcHelper {      public void invokeNfcBeam() {          // Check if device supports NFC          if (!mActivity.getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC)) { -            Notify.createNotify(mActivity, R.string.no_nfc_support, Notify.LENGTH_LONG, Notify.Style.ERROR).show(); +            Notify.create(mActivity, R.string.no_nfc_support, Notify.LENGTH_LONG, Notify.Style.ERROR).show();              return;          }          // Check for available NFC Adapter          mNfcAdapter = NfcAdapter.getDefaultAdapter(mActivity);          if (mNfcAdapter == null || !mNfcAdapter.isEnabled()) { -            Notify.createNotify(mActivity, R.string.error_nfc_needed, Notify.LENGTH_LONG, Notify.Style.ERROR, new Notify.ActionListener() { +            Notify.create(mActivity, R.string.error_nfc_needed, Notify.LENGTH_LONG, Notify.Style.ERROR, new Notify.ActionListener() {                  @Override                  public void onAction() {                      Intent intentSettings = new Intent(Settings.ACTION_NFC_SETTINGS); @@ -176,7 +177,7 @@ public class NfcHelper {          }          if (!mNfcAdapter.isNdefPushEnabled()) { -            Notify.createNotify(mActivity, R.string.error_beam_needed, Notify.LENGTH_LONG, Notify.Style.ERROR, new Notify.ActionListener() { +            Notify.create(mActivity, R.string.error_beam_needed, Notify.LENGTH_LONG, Notify.Style.ERROR, new Notify.ActionListener() {                  @Override                  public void onAction() {                      Intent intentSettings = new Intent(Settings.ACTION_NFCSHARING_SETTINGS); @@ -207,8 +208,7 @@ public class NfcHelper {              if (activity != null) {                  switch (msg.what) {                      case NFC_SENT: -                        Notify.showNotify( -                                activity, R.string.nfc_successful, Notify.Style.INFO); +                        Notify.create(activity, R.string.nfc_successful, Notify.Style.OK).show();                          break;                  }              } | 
