web-dev-qa-db-fra.com

Comment faire mon Android App apparaît dans la liste des actions d'une autre application spécifique

<action Android:name="Android.intent.action.SEND" />     
<category Android:name="Android.intent.category.DEFAULT" />
<data Android:mimeType="text/plain" />

ceci est dans mon fichier manifeste

cela fera apparaître mon application sur la liste des actions de toutes les applications mais je souhaite que mon application apparaisse dans la liste Share d'une autre application spécifique et je ne possède pas l'autre application.

24
Android Ninja

Pour ce faire, vous devez connaître l'intention que l'application crée et crée une intentionfilter qui ajoutera votre application à la liste spécifique.

Recevoir une intention implicite On intention et filtres (développeurs Android)

L'application utilise probablement un nom d'action spécifique que vous pourriez accrocher à.

<intent-filter . . . >
    <action Android:name="com.example.project.SHOW_CURRENT" />
    <action Android:name="com.example.project.SHOW_RECENT" />
    <action Android:name="com.example.project.SHOW_PENDING" />
    . . .
</intent-filter>

Ou il pourrait rechercher des applications acceptant un certain type de fichier.

<intent-filter . . . >
    <data Android:mimeType="video/mpeg" Android:scheme="http" . . . /> 
    <data Android:mimeType="audio/mpeg" Android:scheme="http" . . . />
    . . .
</intent-filter>

Le nom de l'application et ce qu'il fait partagerait de m'aider à donner une réponse plus spécifique.

10
DanO

Ajoutez ce code dans l'activité que vous souhaitez ouvrir d'abord lors du partage d'un contenu de l'extérieur de l'application, appelez cette méthode dans Oncreate ()

private void onSharedIntent() {
    Intent receiverdIntent = getIntent();
    String receivedAction = receiverdIntent.getAction();
    String receivedType = receiverdIntent.getType();

    if (receivedAction.equals(Intent.ACTION_SEND)) {

        // check mime type 
        if (receivedType.startsWith("text/")) {

            String receivedText = receiverdIntent
                    .getStringExtra(Intent.EXTRA_TEXT);
            if (receivedText != null) {
                //do your stuff
            }
        }

        else if (receivedType.startsWith("image/")) {

            Uri receiveUri = (Uri) receiverdIntent
                    .getParcelableExtra(Intent.EXTRA_STREAM);

            if (receiveUri != null) {
                //do your stuff
                fileUri = receiveUri;// save to your own Uri object

                Log.e(TAG,receiveUri.toString());
            }
        }

    } else if (receivedAction.equals(Intent.ACTION_MAIN)) {

        Log.e(TAG, "onSharedIntent: nothing shared" );
    }
}

Ajoutez ceci dans Manifest,

 <activity
            Android:name="your-package-name.YourActivity">
            <intent-filter>
                <action Android:name="Android.intent.action.SEND" /> 

                <category Android:name="Android.intent.category.DEFAULT" />      
                <data Android:mimeType="image/*" />
                <data Android:mimeType="text/*" />
            </intent-filter>
        </activity>
8
Soropromo

cela a bien fonctionné pour moi pour obtenir toutes les pages Web, pour - mon application qui analyse pour les fichiers MP3 sur une page Web et définit les alarmes d'eux. Il ouvre ma nouvelle activité d'URL lorsque vous partagez une page Web:

Voici ce que ce code donne: enter image description here

  <activity
        Android:name=".NewUrl"
        Android:label="@string/title_activity_new_url"
        Android:windowSoftInputMode="stateUnchanged">
        <intent-filter>
            <action Android:name="Android.intent.action.SEND"/>
            <category Android:name="Android.intent.category.DEFAULT"/>
            <data Android:mimeType="text/*"/>
        </intent-filter>
    </activity>

Ensuite, pour recevoir le lien dans l'application, j'ai eu des informations géniales de ce tutoriel: http://code.tutsplus.com/tatudials/android-sdk-receiving-data-from-the-send-Intent-- mobile-14878

7
med116

ajoutez ceci à votre fichier Mainfist

<activity Android:name=".ShareActivity">
<intent-filter
    Android:label="Share with my app">
    <action Android:name="Android.intent.action.SEND" />
    <category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>

Ce lien peut vous aider

4
AbuQauod

Je vérifierais pour voir s'il y a une API pour cette application que vous souhaitez travailler.

Si oui, vous pouvez en bénéficier en sachant

  • une action implicite plus spécifique pour votre filtre
  • ou peut-être ajouter une catégorie autre que par défaut
  • Si vous pouvez trouver quelque chose comme ceux-ci, il serait peu probable que d'autres applications soient visibles.

    0
    WineGoddess