Как отправить намерение из одного из моих приложений в другое из моих приложений? - PullRequest
0 голосов
/ 24 июня 2018

У меня есть класс IntentService, который в com.mypackage.app1.receiver (первое приложение):

public class IntentService extends Service {
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.w("INTENT SERVICE", "Received request to start intent");
        return super.onStartCommand(intent, flags, startId);
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        Log.w(TAG, "onBind");
        return null;
    }
}

В манифесте я прописываю:

<service android:name=".IntentService" >
    <intent-filter>
        <action android:name="com.mypackage.START_INTENT"/>
        <category android:name="com.mypackage.category.DEFAULT"/>
        <data android:mimeType="text/plain"/>
    </intent-filter>
</service>

В другом приложении у меня есть SenderActivity в com.mypackage.app2.sender, который просто должен начать отправлять намерение при открытии и сразу же закрыться:

public class SenderActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = new Intent("com.learningleaflets.START_INTENT");
        intent.setPackage("com.mypackage");
        startService(intent);
        finish();
    }
}

К сожалению, в настоящее время намерение, которое отправляет SenderActivity, не получено IntentService. Что мне нужно сделать, чтобы получить его?

1 Ответ

0 голосов
/ 24 июня 2018

Заменить:

<service android:name=".IntentService" >
    <intent-filter>
        <action android:name="com.mypackage.START_INTENT"/>
        <category android:name="com.mypackage.category.DEFAULT"/>
        <data android:mimeType="text/plain"/>
    </intent-filter>
</service>

с:

<service android:name=".IntentService" >
    <intent-filter>
        <action android:name="com.learningleaflets.START_INTENT"/>
    </intent-filter>
</service>

, чтобы соответствовать Intent, который вы используете с startService().

Кроме того, поскольку существует класс Android SDK с именем IntentService, я рекомендую изменить имя службы на другое.

...