无法启动服务Intent,U = 0:未找到

时间:2017-09-12 05:50:21

标签: android service ipc messenger

我在这个问题上已经挣扎了两天。 我有两个应用程序并尝试通过Messenger IPC进行通信,但它甚至无法绑定到服务器应用程序的服务。

---服务器端

    <service android:name="com.example.RemoteService" android:exported="true">
    </service>
</application>

- 客户端

@Override
protected void onCreate(Bundle savedInstanceState) {
             :
     this.connection = new RemoteServiceConnection();

@Override
public void onStart() {
           :
     Intent intent = new Intent();
    intent.setClassName("com.example.client", "com.example.RemoteService");
    //Intent i = new Intent("com.example.RemoteService");
    //i.setPackage(this.getPackageName());
    boolean ret = bindService(intent , this.connection, Context.BIND_AUTO_CREATE);
  

ret始终为false并始终接收系统消息   W / ActivityManagerService:无法启动服务Intent {   act = com.example.RemoteService pkg = com.example.client} U = 0:未找到

似乎一切都可以实现。我觉得这是层层问题。请帮忙。

由于

这是服务类

public class RemoteService extends Service
{
    private Messenger messenger; //receives remote invocations
    @Override
    public IBinder onBind(Intent intent)
    {
        if(this.messenger == null)
        {
            synchronized(RemoteService.class)
            {
                if(this.messenger == null)
                {
                    this.messenger = new Messenger(new IncomingHandler());
                }
            }
        }
        //Return the proper IBinder instance
        return this.messenger.getBinder();
    }

    private class IncomingHandler extends Handler
    {
        @Override
        public void handleMessage(Message msg)
        {
            System.out.println("*****************************************");
            System.out.println("Remote Service successfully invoked!!!!!!");
            System.out.println("*****************************************");

            int what = msg.what;

            Toast.makeText(RemoteService.this.getApplicationContext(), "Remote Service invoked-("+what+")", Toast.LENGTH_LONG).show();

            //Setup the reply message
            Message message = Message.obtain(null, 2, 0, 0);
            try
            {
                //make the RPC invocation
                Messenger replyTo = msg.replyTo;
                replyTo.send(message);
            }
            catch(RemoteException rme)
            {
                //Show an Error Message
                Toast.makeText(RemoteService.this, "Invocation Failed!!", Toast.LENGTH_LONG).show();
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

尝试像这样开始你的服务

startService(new Intent(this, YourService.class));
不要忘记在您的清单中添加您的服务,

<application>

    <service
        android:name=".MyService"
         >
    </service>

</application>

答案 1 :(得分:0)

有时,如果找不到任何错误代码,则可以尝试重新启动设备。可以解决这个问题。

答案 2 :(得分:0)

setClassName将包名和类名作为参数:

intent.setClassName("com.example.client", "com.example.RemoteService");

如果包名称为com.example.client,则类名称应为RemoteServicecom.example.client.RemoteService

您还可以检查软件包是否出现在以下位置: /data/data/com.example ....

仅由于找不到包/类而发生此错误