主要想法
我有两个申请。该服务位于一个应用程序中,客户端位于另一个应用程序中。
问题是我无法绑定服务,因为它给了我错误:
无法启动服务Intent {act = com.ccc.serviceaarfinal.WifiAARService pkg = com.ccc.serviceaarfinal} U = 0:未找到
服务manifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ccc.serviceaarfinal">
<application
...
<service
android:name="com.ccc.serviceaarfinal.WifiAARService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.ccc.serviceaarfinal.WifiAARService" />
</intent-filter>
</service>
</application>
客户端连接尝试:
private void connectService() {
serviceConnection = new RemoteServiceConnection();
Intent i = new Intent("com.ccc.serviceaarfinal.WifiAARService");
i.setPackage("com.ccc.serviceaarfinal");
bindService(i, serviceConnection, Context.BIND_AUTO_CREATE);
}
到目前为止我尝试了什么
注意:
我运行adb logcat
以查看是否还有其他可以帮助我的内容
我试图在另一台计算机上运行该项目仍然无法正常工作
我没有重命名任何内容
我还尝试了android:name=".WifiAARService"
而不是android:name="com.ccc.serviceaarfinal.WifiAARService"
另一个说明。我已经实现了服务连接:
private RemoteServiceConnection serviceConnection;
private IWifiAARService service;
class RemoteServiceConnection implements ServiceConnection {
public void onServiceConnected(ComponentName name, IBinder boundService) {
service = IWifiAARService.Stub.asInterface((IBinder) boundService);
Toast.makeText(MainActivity.this, "Service connected", Toast.LENGTH_LONG)
.show();
}
public void onServiceDisconnected(ComponentName name) {
service = null;
Toast.makeText(MainActivity.this, "Service disconnected", Toast.LENGTH_LONG)
.show();
}
}
我试着遵循这个例子https://www.sitepoint.com/aidl-for-sharing-functionality-between-android-apps/,如果我在没有任何资本支配的情况下命名模块(我很奇怪,我知道),它就适合我。
答案 0 :(得分:0)
警告:为确保您的应用安全,请始终使用明确的 启动服务时的意图,并且不为其声明意图过滤器 你的服务。使用隐式意图启动服务是一个 安全隐患,因为你不能确定会有什么服务 响应意图,用户无法查看启动哪个服务。 从Android 5.0(API级别21)开始,系统抛出一个 如果使用隐式intent调用bindService(),则会出现异常。
您应该删除intent-filters
并且您可以使用ComponentName
在另一个进程中启动组件。
Intent intent=new Intent();
intent.setComponent(new ComponentName("com.ccc.serviceaarfinal","com.ccc.serviceaarfinal.WifiAARService"));
appContext.bindService(intent,mConnection, Context.BIND_AUTO_CREATE)
答案 1 :(得分:0)
我发现了问题!我只是构建服务应用程序,但是需要运行应用程序。