Android不绑定服务 - 消息“>无法启动服务Intent”

时间:2017-03-24 14:40:43

标签: android

主要想法

我有两个申请。该服务位于一个应用程序中,客户端位于另一个应用程序中。

问题是我无法绑定服务,因为它给了我错误:

  

无法启动服务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/,如果我在没有任何资本支配的情况下命名模块(我很奇怪,我知道),它就适合我。

2 个答案:

答案 0 :(得分:0)

来自Official Docs

  

警告:为确保您的应用安全,请始终使用明确的   启动服务时的意图,并且不为其声明意图过滤器   你的服务。使用隐式意图启动服务是一个   安全隐患,因为你不能确定会有什么服务   响应意图,用户无法查看启动哪个服务。   从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)

我发现了问题!我只是构建服务应用程序,但是需要运行应用程序。