2016-05-30 107 views
0

我想从一个应用程序发送一个字符串到服务发送字符串服务的应用程序,我使用的绑定服务,我已经实现了这个代码:从另一个应用程序

package pref.com.app1; 
public class MainActivity extends AppCompatActivity { 


    Messenger mService = null; 
    /** Flag indicating whether we have called bind on the service. */ 
    boolean mIsBound; 



    class IncomingHandler extends Handler { 
     @Override 
     public void handleMessage(Message msg) { 

    Toast.makeText(getApplicationContext(), "IncomingClient--:"+msg.arg1, Toast.LENGTH_LONG).show(); 
     } 
    } 

    /** 
    * Target we publish for clients to send messages to IncomingHandler. 
    */ 
    final Messenger mMessenger = new Messenger(new IncomingHandler()); 
    private ServiceConnection mConnection = new ServiceConnection() { 
     public void onServiceConnected(ComponentName className, 
             IBinder service) { 
      Toast.makeText(getApplicationContext(), "sn:"+service.toString(), 
        Toast.LENGTH_SHORT).show(); 

      mService = new Messenger(service); 

      try { 
       Message msg = Message.obtain(null, 
         1); 
       msg.replyTo = mMessenger; 
       mService.send(msg); 

       // Give it some value as an example. 
       msg = Message.obtain(null, 
         1, this.hashCode(), 0); 
       mService.send(msg); 
      } catch (RemoteException e) { 

        Toast.makeText(getApplicationContext(), "catch1--:"+e.toString(), 
       Toast.LENGTH_SHORT).show(); 
      } 


     } 

     public void onServiceDisconnected(ComponentName className) { 

      mService = null; 
      Toast.makeText(getApplicationContext(),"Handler-Disconnect---", 
        Toast.LENGTH_SHORT).show(); 
     } 
    }; 


    public void doBindService() { 

     Intent intentForMcuService = new Intent(); 
     intentForMcuService.setComponent(new ComponentName("com.example.newpro", "com.example.newpro.MainActivity")); 
     if (getApplicationContext().bindService(intentForMcuService, mConnection,Context.BIND_AUTO_CREATE 
     )){ 
      Toast.makeText(getApplicationContext(),"binded", 
        Toast.LENGTH_SHORT).show(); 
     }else { 
      Toast.makeText(getApplicationContext(),"not binded", 
        Toast.LENGTH_SHORT).show(); 
     } 

     mIsBound = true; 
     Toast.makeText(getApplicationContext(), "binding-client", 
       Toast.LENGTH_SHORT).show(); 
    } 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     Button sosBtn = (Button) findViewById(R.id.button); 
     sosBtn.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       doBindService(); 
      } 
     }); 
    } 

,我的服务是:

​​

当我运行两个应用,APP1显示 “未绑定”:在这一行 :

Toast.makeText(getApplicationContext(),"not binded", 
         Toast.LENGTH_SHORT).show(); 

有何我该怎么办? 请帮助我。 由于事先

+0

'新的组件名称( “com.example.newpro”, “com.example.newpro.MainActivity”)'要创建错误'ComponentName' – pskink

+0

pskink,我现在应该做什么? –

+0

做一个正确的'ComponentName'指向你想要绑定的'Service'? – pskink

回答

相关问题