Skip to content

Commit

Permalink
shareActionProvider -> intent chooser : permet d'avoir le choix dans …
Browse files Browse the repository at this point in the history
…la liste des applications disponibles sur l'appareil (yc Linkedin, Gmail, ...)

https://developer.android.com/training/basics/intents/sending?hl=fr#java
  • Loading branch information
AnaelMobilia committed Nov 28, 2023
1 parent 8183d0e commit b3adec8
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 55 deletions.
68 changes: 22 additions & 46 deletions app/src/main/java/com/pcinpact/ArticleActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
*/
package com.pcinpact;

import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
Expand All @@ -27,17 +28,13 @@
import android.view.View;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.ShareActionProvider;
import androidx.core.view.MenuItemCompat;
import androidx.viewpager2.widget.ViewPager2;

import com.andremion.counterfab.CounterFab;
import com.pcinpact.datastorage.DAO;
import com.pcinpact.items.ArticleItem;
import com.pcinpact.utils.Constantes;

import java.util.UUID;

/**
* Affichage d'un article.
*
Expand Down Expand Up @@ -145,15 +142,12 @@ public boolean onCreateOptionsMenu(Menu menu) {
if (cacherBoutonPartage) {
// Le cacher
shareItem.setVisible(false);
} else {
genererShareIntent(true);
}

// Configuration de l'intent
// Configuration du slider
monViewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
Expand All @@ -166,18 +160,12 @@ public void onPageSelected(int position) {
// Marquer l'article comme lu en BDD
monDAO.marquerArticleLu(articleId);

// Mise à jour de l'intent
if (!cacherBoutonPartage) {
genererShareIntent(false);
}

// Bouton des commentaires
genererBadgeCommentaires();
}

@Override
public void onPageScrollStateChanged(int state) {

}
});

Expand All @@ -192,42 +180,30 @@ public boolean onOptionsItemSelected(final MenuItem pItem) {
Intent intentDebug = new Intent(getApplicationContext(), DebugActivity.class);
intentDebug.putExtra("ARTICLE_ID", articleId);
startActivity(intentDebug);
}

return super.onOptionsItemSelected(pItem);
}

/**
* Création d'un intent pour le Share (mutualisation de code)
*
* @param isNewActivity boolean Est-ce une nouvelle activité ou un glissement d'article ?
*/
private void genererShareIntent(boolean isNewActivity) {
// Chargement de l'article concerné
ArticleItem monArticle = monDAO.chargerArticle(articleId);
} else if (id == R.id.action_share) {
// Chargement de l'article concerné
ArticleItem monArticle = monDAO.chargerArticle(articleId);

// Création de l'intent
Intent monIntent = new Intent(Intent.ACTION_SEND);
monIntent.setType("text/plain");
monIntent.putExtra(Intent.EXTRA_TEXT, monArticle.getURLseo());
// DEBUG
if (Constantes.DEBUG) {
Log.i("ArticleActivity", "onOptionsItemSelected() - Intent " + articleId + " / " + monArticle.getURLseo());
}

// DEBUG
if (Constantes.DEBUG) {
Log.i("ArticleActivity", "genererShareIntent() - Intent " + articleId + " / " + monArticle.getURLseo());
// Création de l'intent
Intent monIntent = new Intent(Intent.ACTION_SEND);
monIntent.setType("text/plain");
monIntent.putExtra(Intent.EXTRA_TEXT, monArticle.getURLseo());
try {
startActivity(monIntent);
} catch (ActivityNotFoundException e) {
// DEBUG
if (Constantes.DEBUG) {
Log.e("ArticleActivity", "onOptionsItemSelected() - Impossible de lancer l'intent pour " + articleId, e);
}
}
}

ShareActionProvider myShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem);
// Ne pas afficher l'icône de la dernière application utilisés pour le partage
// Génère des exceptions malgré la doc "java.lang.IllegalStateException: No preceding call to #readHistoricalData"
//myShareActionProvider.setShareHistoryFileName(null);
// Du coup on utilise un nom de fichier random qui sera effacé à la fermeture de l'application
myShareActionProvider.setShareHistoryFileName(Constantes.PREFIXE_SHARE_HISTORY_FILE_NAME + UUID.randomUUID().toString());
// Assignation de mon intent
myShareActionProvider.setShareIntent(monIntent);
// Si ce n'est pas une nouvelle activité, rafraîchir le menu pour supprimer la dernière action
if (!isNewActivity) {
supportInvalidateOptionsMenu();
}
return super.onOptionsItemSelected(pItem);
}

/**
Expand Down
3 changes: 0 additions & 3 deletions app/src/main/java/com/pcinpact/ListeArticlesActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -420,9 +420,6 @@ protected void onDestroy() {
try {
// Détachement du listener pour la taille des textes
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).unregisterOnSharedPreferenceChangeListener(listenerOptions);

// Suppression des fichiers temporaires pour l'historique du ShareActionProvider
CacheManager.effacerContenuRepertoire(getFilesDir().toString(), Constantes.PREFIXE_SHARE_HISTORY_FILE_NAME);
} catch (Exception e) {
// DEBUG
if (Constantes.DEBUG) {
Expand Down
5 changes: 0 additions & 5 deletions app/src/main/java/com/pcinpact/utils/Constantes.java
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,6 @@ public class Constantes {
* Taille (en Mo) du cache sur le disque
*/
public static final int TAILLE_CACHE = 50;
/**
* Préfixe pour les fichiers servant à gérer l'historique du ShareActionProvider
*/
public static final String PREFIXE_SHARE_HISTORY_FILE_NAME = "historySAP_";


/*
* TYPES DE TELECHARGEMENTS.
Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/menu/activity_article_actions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
android:id="@+id/action_share"
android:icon="@drawable/ic_menu_share"
android:title="@string/action_share"
yourapp:actionProviderClass="androidx.appcompat.widget.ShareActionProvider"
yourapp:showAsAction="ifRoom" />

<!-- DEBUG -->
Expand Down

0 comments on commit b3adec8

Please sign in to comment.