如何在android中使应用程序默认进行图像共享?

时间:2015-07-16 07:11:34

标签: android android-intent android-manifest

  

这是方案

     

1)我从图库中打开一些图像,然后点击它显示的分享按钮   应用程序列表选择

     

2)当我从中选择我的申请时   如果我的应用程序不在,则列表始终从启动器活动打开   背景

     

3)当我选择facebook而不是我的应用程序时   像这样打开

enter image description here

  

4)当我看到后台runnig应用程序正在显示facebook   如下图像(Facebook应用程序未打开)的gallary应用程序

enter image description here

  

但是我的清单代码与我的应用程序不一样   以下

 <activity
            android:name=".ui.activities.SplashActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop"
            android:screenOrientation="sensorPortrait"
            android:windowSoftInputMode="adjustResize" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>         
        </activity>

        <activity
            android:name=".ui.activities.MainActivity"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:screenOrientation="sensorPortrait"
            android:windowSoftInputMode="adjustResize" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>

             <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />

                <data android:mimeType="*/*" />
            </intent-filter>
              </activity>

1 个答案:

答案 0 :(得分:0)

您的共享活动jus需要此意图过滤器。 从中删除操作主 - 如果您不想从启动器图标启动它

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter> 

您需要使用以下意图过滤器才能使活动能够共享/发送图像

            <activity
                android:name=".ShareActivity"
                android:label="@string/title_activity_share" >

                <intent-filter>
                    <action android:name="android.intent.action.SEND" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <data android:mimeType="image/*" />
                </intent-filter>

            </activity>

然后处理共享功能的活动应该处理数据

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_share);

        // 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 (type.startsWith("image/")) {
               Toast.makeText(ShareActivity.this,"share",Toast.LENGTH_LONG).show(); // Handle single image being sent
            }
        }
    }