<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.
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.
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>
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:
<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
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>
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
Si vous pouvez trouver quelque chose comme ceux-ci, il serait peu probable que d'autres applications soient visibles.