如何让我的Android应用程序出现在其他特定应用的共享列表如何让我的Android应用程序出现在其

2019-06-02 12:03发布

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

这是我的清单文件

这将使我的应用程序出现在所有的应用程序的共享列表上,但我想我的应用程序出现在其他特定应用的共享列表,我没有自己的其他应用程序

Answer 1:

为了做到这一点,你需要知道应用程序创建的意图,并创建一个IntentFilter的,将您的应用程序添加到具体名单。

接受隐含意图的意图和过滤器(Android开发者)

该应用程序可能使用,你可以钩到一个特定的动作名称。

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

或者,它可能会寻找应用程序接受某种类型的文件。

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

该应用程序以及它是共享将有助于我举一个更具体的响应的名称。



Answer 2:

这个工作很适合我了让所有网页,为我的应用程序 ,对于MP3文件扫描网页上,并设置警报从他们。 它开辟了我的新URL活动,当您共享网页:

下面是该代码产生:

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

然后到接收应用程序的链接,我得到了这个教程要命信息: http://code.tutsplus.com/tutorials/android-sdk-receiving-data-from-the-send-intent--mobile-14878



Answer 3:

添加到您的mainefist文件

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

这个链接可以帮助你



Answer 4:

在你想第一次打开共享从应用程序之外的内容时,调用的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" );
    }
}

在清单中添加这个,

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


Answer 5:

我会检查,看看是否有这个程序,你要使用任何API。

如果是这样,你可以通过了解中受益

  • 为您的过滤器更具体的隐含动作
  • 或者可能添加DEFAULT以外的类别
  • 如果你能找到的东西像这样,这将是不太可能被其他应用程序中可以看出。



    Answer 6:

    -添加以下代码到具体的活动项目的AndroidManifest.xml文件。

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

    -添加下面的代码行到你的项目的具体活动。

        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"));
                }
    


    文章来源: How to make my Android app appear in the share list of another specific app