0

J'ai créé une application de galerie. Il ouvre des images et des photos mais System ne l'obtient pas comme une application de galerie. Quelqu'un pourrait-il m'aider à le définir comme une application de la galerie? Merci!Comment créer une application de galerie Android

+0

** système est d'obtenir pas comme une application de galerie ** signifie? –

Répondre

0

Vous devez utiliser Intents and Intents Filters

Dans le lien ci-dessus, vous devriez lire « Recevoir une intention implicite »

Pour annoncer qui les intentions implicites de votre application peut recevoir, déclarer un ou plusieurs filtres d'intention pour chaque de vos composants d'application avec un élément dans votre fichier manifeste. Chaque filtre d'intention spécifie le type d'intentions qu'il accepte en fonction de l'action, des données et de la catégorie de l'intention. Le système fournit une intention implicite à votre composant d'application uniquement si l'intention peut passer par l'un de vos filtres d'intention.

<activity android:name="ShareActivity"> 
 
    <intent-filter> 
 
     <action android:name="android.intent.action.SEND"/> 
 
     <category android:name="android.intent.category.DEFAULT"/> 
 
     <data android:mimeType="text/plain"/> 
 
    </intent-filter> 
 
</activity>

^le code ci-dessus (extrait de la documentation) montrent comment assurez-vous que votre application ouverte lorsque toute autre utilisation SEND intention d'activité.

changez l'action et mimeType pour obtenir le résultat désiré (envoi de photo ?, afficher photo? Etc).

1

mise à jour de votre manifeste, Ceci indiquera d'autres applications pour recevoir le contenu

<activity android:name=".ui.MyActivity" > 
<intent-filter> 
    <action android:name="android.intent.action.SEND" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="image/*" /> 
</intent-filter> 
<intent-filter> 
    <action android:name="android.intent.action.SEND" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="text/plain" /> 
</intent-filter> 
<intent-filter> 
    <action android:name="android.intent.action.SEND_MULTIPLE" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="image/*" /> 
</intent-filter> 

Manipulez le contenu entrant.

void onCreate (Bundle savedInstanceState) { 

// Get intent, action and MIME type 
Intent intent = getIntent(); 
String action = intent.getAction(); 
String type = intent.getType(); 

if (Intent.ACTION_SEND.equals(action) && type != null) { 
    if ("text/plain".equals(type)) { 
     handleSendText(intent); // Handle text being sent 
    } else if (type.startsWith("image/")) { 
     handleSendImage(intent); // Handle single image being sent 
    } 
} else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null)  { 
    if (type.startsWith("image/")) { 
     handleSendMultipleImages(intent); 
// Handle multiple images being sent 
    } 
} else { 
    // Handle other intents, such as being started from the home screen 
} 

} 

void handleSendText(Intent intent) { 
String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT); 
if (sharedText != null) { 
    // Update UI to reflect text being shared 
} 
} 

void handleSendImage(Intent intent) { 
Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM); 
if (imageUri != null) { 
    // Update UI to reflect image being shared 
} 
} 

void handleSendMultipleImages(Intent intent) { 
ArrayList<Uri> imageUris =    intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); 
if (imageUris != null) { 
    // Update UI to reflect multiple images being shared 
} 
} 

docs officiels: https://developer.android.com/training/sharing/receive.html