How to create an android gallery app

1.2k views Asked by At

I have created a gallery app. It opens images and photos but System isn't get it as a gallery app. Could anyone help me to set it as a gallery app? Thank you!

2

There are 2 answers

0
yotam hadas On

You should use Intents and Intents Filters

In the link above you should read about "Receiving an implicit intent"

To advertise which implicit intents your app can receive, declare one or more intent filters for each of your app components with an element in your manifest file. Each intent filter specifies the type of intents it accepts based on the intent's action, data, and category. The system delivers an implicit intent to your app component only if the intent can pass through one of your intent filters.

<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>

^ the code above (taken from the documentation) show how to make sure your app open when other activity use SEND intent.

change the action and mimeType to get the resault you want (sending photo?, display photo? etc).

0
Milon On

update your manifest, This will tell other apps to receive content

<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>

Handle the Incoming Content.

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
}
}

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