私は何か重要なものが欠けているか...
2つのアプリケーションがあります。そのうちの1つには、AndroidManifestで宣言されたインテントフィルターを備えたエクスポートされたサービスが含まれています。
<service
android:name=".MyService"
android:exported="true"
android:permission="my.permission" >
<intent-filter>
<action android:name="my.service" />
</intent-filter>
</service>
「my.service」アクションを使用して、別のアプリケーションからそのサービスに正常にバインドできます。しかし、サービスを開始したい(コマンドを送信する)。私が書いた場合:
Intent intent = new Intent("my.service");
intent.setAction("my.command");
ComponentName cn = startService(intent);
null
入りますcn
(サービスは解決できません)。しかし、これを次のように変更すると、
PackageManager packageManager = getPackageManager();
Intent serviceIntent = new Intent("my.service");
List<ResolveInfo> services = packageManager.queryIntentServices(serviceIntent, 0);
if (services.size() > 0) {
ResolveInfo service = services.get(0);
intent = new Intent();
intent.setClassName(service.serviceInfo.packageName, service.serviceInfo.name);
intent.setAction("my.command");
ComponentName cn = startService(intent);
}
サービスが正常に開始されました。私は最初のバリアントを含むStackOverflowに関する多くのアドバイスを見てきましたが、それを機能させることはできません。何か案は?