How to make my Android app appear in the share list of another specific app How to make my Android app appear in the share list of another specific app android android

How to make my Android app appear in the share list of another specific app


Add this code in the activity you want opened first when sharing a content from outside the app, call this method in 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" );    }}

Add this in 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>


In order to do this, you need to know the Intent that the application is creating and create an IntentFilter that will add your application to the specific list.

Receiving an Implicit Intent on Intents and Filters (Android Developers)

The application probably uses a specific action name that you could hook to.

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

Or it could be looking for applications accepting a certain type of file.

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

The name of the application and what it is sharing would help me give a more specific response.


enter image description here- Add below code into your Project AndroidManifest.xml file in Specific Activity.

     <activity                android:name=".MainActivity"                android:theme="@style/Theme.AppCompat.Light.NoActionBar">            <intent-filter>                <action android:name="android.intent.action.SEND" />                <category android:name="android.intent.category.DEFAULT" />                <data android:mimeType="text/plain" />            </intent-filter>     </activity>

- Add the following line of code into your project specific Activity.

    Intent intent = getIntent();    String action = intent.getAction();    String type = intent.getType();    if ("android.intent.action.SEND".equals(action) && type != null && "text/plain".equals(type)) {                Log.println(Log.ASSERT,"shareablTextExtra",intent.getStringExtra("android.intent.extra.TEXT"));            }