0

電話の起動時に開始するという名前のBroadcastReceiverがあり、サービスが開始されますが、このBroadcastReceiverからサービス にアクセスすると例外が発生します。StartService

android.content.ReceiverCallNotAllowedException: IntentReceiver コンポーネントはサービスにバインドできません

私のコードは以下です:

import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.util.Log;

public class StartService extends BroadcastReceiver {
        private RemoteServiceConnection conn = null;
        private IMyRemoteService remoteService;
        @Override
        public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        Intent startServiceIntent = new Intent(context, RemoteServiceClient.class);
                                    context.startService(startServiceIntent);
                                    conn = new RemoteServiceConnection();


                                        Intent i = new Intent();
                                        i.setClassName("com.collabera.labs.sai", "com.collabera.labs.sai.RemoteService");
                                        context.bindService(i, conn, Context.BIND_AUTO_CREATE);
                                }

                                class RemoteServiceConnection implements ServiceConnection {
                                    public void onServiceConnected(ComponentName className, 
                                        IBinder boundService ) {
                                      remoteService = IMyRemoteService.Stub.asInterface((IBinder)boundService);
                                      Log.d( getClass().getSimpleName(), "onServiceConnected()" );
                                    }

                                    public void onServiceDisconnected(ComponentName className) {
                                      remoteService = null;
                                       Log.d( getClass().getSimpleName(), "onServiceDisconnected" );
                                    }
                                };
                            }
4

1 に答える 1

0

ステップの一部が続きます。

ステップ1:

public class StartService extends BroadcastReceiver
        {  
            @Override
            public void onReceive(Context context, Intent intent) {
                Intent startServiceIntent = new Intent(context, myServices.class);
                context.startService(startServiceIntent);           
            }    
        } 

ステップ2:

// make all service related task

ステップ 3:

<service
            android:name=".myServices"
            android:enabled="true" />
        <receiver android:name="com.yourpackage.StartService " >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

私はいつも BroadcastReceiver とサービスをこのように使用しています。

役立つ場合があります。役立つ場合は、回答を受け入れてください。

于 2013-03-28T10:16:16.647 に答える