在应用程序处于后台时,通过Intent for Android App接收简单数据

时间:2018-01-27 04:03:20

标签: android android-intent

我有一个应用程序通过其他应用程序共享到我的应用程序从其他应用程序接收简单数据(文本)。清单的一部分看起来像这样:

    <activity
        android:name=".presentation.ui.activities.MainActivity"
        android:launchMode="singleTop">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </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>
    </activity>

当尚未创建活动时,我将来自其他应用程序的文本数据共享到我的应用程序,并使用onCreate方法中的action.action.Send处理意图。但是,我还希望能够在应用程序处于后台时共享文本数据。当应用程序在后台并且我与其他应用程序共享文本数据时,操作是onRestart或onResume方法中的intent.action.MAIN。

这是handleIntent方法

private void handleIntent(){
    Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();

    if (Intent.ACTION_SEND.equals(action) && type != null) {
        if ("text/plain".equals(type)) {
            String text = intent.getStringExtra(Intent.EXTRA_TEXT);
            // logic
        }
    }
}

当我的应用在后台时,如何从其他应用收到文本数据?

2 个答案:

答案 0 :(得分:1)

我已经弄清楚了。

我覆盖了newIntent方法

protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    handleIntent(intent);
}

答案 1 :(得分:-1)

将简单数据发送到其他应用

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to)));

从其他应用程序接收简单数据

更新您的清单

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

处理传入内容

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

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