can't start intent startActivityForResult from class
<p>I will be very happy if someone can help me, because I'm new at object programming. My problem is: I'm writting some app with bluetooth communication. I wrote all methods and successfully connect and transfer data between devices in <em>MainActivity.class</em>. I have also one <em>SearchActivity.class</em> which shows all devices in range on List, so user can pick one. Device is then passed through Intent to <em>MainActivity</em>, where connection starts. But because of nature of my app I must created separate class, just for Bluetooth communication called <em>BluetoothService.class</em>. I moved all methods for Bluetooth and other stuff to <em>BluetoothService.class.</em>
 Now I even can't compile my project, because I get error at creating Intent for SearchActivity, I also get error startActivityForResult and onActivityResult methods.</p>

<p>First error is: <em>The constructor Intent(BluetoothService, Class) is undefined</em></p>

<p>Second error: <em>The method startActivityForResult(Intent, int) is undefined for the type BluetoothService</em></p>

<pre><code>public void startConnection() {
    // Create an intent for SearchActivity 
    Intent intent = new Intent(this, SearchActivity.class);
    //start SearchActivity through intent and expect for result. 
    //The result is based on result code, which is REQUEST_DISCOVERY
    startActivityForResult(intent, REQUEST_DISCOVERY);              
}  
</code></pre>

<p>When I was calling method <em>startConnection()</em> from MainActivity everything worked, but now I it doesn't. I think the problem is, that I can't create new Activity from non-activity class.</p>

<p>Next error is in onActivityResult method: *RESULT_OK cannot be resolved to a variable*</p>

<pre><code>//on ActivityResult method is called, when other activity returns result through intent!
//when user selected device in SearchActivity, result is passed through intent with //requestCode, resultCode (intent data + requestCode + resultCode)
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode != REQUEST_DISCOVERY) {
    Log.d("Debug", "&gt;&gt;intent REQUEST_DISCOVERY failed!");
    return;
    }
    if (resultCode != RESULT_OK) {
    Log.d("Debug", "&gt;&gt;intent RESULT_OK failed!");
    return;
    }
    Log.d("Debug", "&gt;&gt;onActivityResult!");
    final BluetoothDevice device = data.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

    Log.d(device.getName(), "Name of Selected Bluetoothdevice");


    new Thread () {
        public void run() {
        //call connect function with device argument
        connect(device);
        };
    }.start();
    }
</code></pre>

<p>Please, tell me how can I solve this. If you need more info or code tell me. Thanks.</p>

<pre><code>public class SearchActivity  extends ListActivity
{
    //name of LxDevices, that will be shown on search
    private String nameOfLxDevice = "DEBUG";

    private Handler handler = new Handler();
    /* Get Default Adapter */
    private BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    /* Storage the BT devices */
    private List&lt;BluetoothDevice&gt; devices = new ArrayList&lt;BluetoothDevice&gt;();
    /* Discovery is Finished */
    private volatile boolean discoveryFinished;


    /* Start search device */ 
    private Runnable discoveryWorker = new Runnable() {
        public void run() 
        {
            //To start discovering devices, simply call startDiscovery(). The process is asynchronous and the method will 
            //immediately return with a boolean indicating whether discovery has successfully started.
            mBluetoothAdapter.startDiscovery();
            Log.d("debug", "&gt;&gt;Starting Discovery");
            for (;;) 
            {
                if (discoveryFinished) 
                {
                    Log.d("debug", "&gt;&gt;Finished");
                    break;
                }
                try 
                {
                    Thread.sleep(100);
                } 
                catch (InterruptedException e){}
            }
        }
    }; 

    /* when discovery is finished, this will be called */
    //Your application must register a BroadcastReceiver for the ACTION_FOUND Intent in order to receive information about each device discovered.
    //For each device, the system will broadcast the ACTION_FOUND Intent. This Intent carries the extra fields EXTRA_DEVICE and EXTRA_CLASS,
    //containing a BluetoothDevice and a BluetoothClass, respectively

    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            /* get the search results */
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);               
                //add it on List&lt;BluetoothDevice&gt;
                devices.add(device);
                //show found LxDevice on list
                showDevices();
            }           
        }
    };

    private BroadcastReceiver discoveryReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent)  
        {
            /* unRegister Receiver */
            Log.d("debug", "&gt;&gt;unregisterReceiver");
            unregisterReceiver(mBroadcastReceiver);
            unregisterReceiver(this);
            discoveryFinished = true;
        }
    };

    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);

        /* BT isEnable */
        if (!mBluetoothAdapter.isEnabled())
        {
            Log.w("debug", "&gt;&gt;BT is disable!");
            finish();
            return;
        }
        /* Register Receiver*/
        IntentFilter discoveryFilter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
        registerReceiver(discoveryReceiver, discoveryFilter);
        IntentFilter foundFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
        registerReceiver(mBroadcastReceiver, foundFilter);


        /* show a dialog "Scanning..." */ 
        SamplesUtils.indeterminate(SearchActivity.this, handler, "Scanning for LX devices..", discoveryWorker, new OnDismissListener() {
            public void onDismiss(DialogInterface dialog)
            {
                for (; mBluetoothAdapter.isDiscovering();) {
                    // Discovery is resource intensive.  Make sure it isn't going on when you attempt to connect and pass your message.
                    mBluetoothAdapter.cancelDiscovery();
                }
                discoveryFinished = true;
            }
        }, true); 
    }

    /* Show devices list */
    private void showDevices()
    {
        //Create a list of strings
        List&lt;String&gt; list = new ArrayList&lt;String&gt;();
        for (int i = 0, size = devices.size(); i &lt; size; ++i) {
            StringBuilder b = new StringBuilder();
            BluetoothDevice d = devices.get(i);
            b.append(d.getName());
            b.append('\n');
            b.append(d.getAddress());
            String s = b.toString();
            list.add(s);
        }

        Log.d("debug", "&gt;&gt;showDevices");
        final ArrayAdapter&lt;String&gt; adapter = new ArrayAdapter&lt;String&gt;(this, android.R.layout.simple_list_item_1, list);
        handler.post(new Runnable() {
            public void run()
            {
                setListAdapter(adapter);
            }
        });
    }

    /* Select device */
    protected void onListItemClick(ListView l, View v, int position, long id) {
        Log.d("debug", "&gt;&gt;Click device");
        Intent result = new Intent();
        result.putExtra(BluetoothDevice.EXTRA_DEVICE, devices.get(position));
        setResult(RESULT_OK, result);
        finish();
    }

}
</code></pre>

<p>In MainActivity I am doing: </p>

<pre><code>// Initialize the BluetoothChatService to perform bluetooth connections
    mBluetoothService = new BluetoothService(this);
</code></pre>

<p>Constructor in BluetoothService is:</p>

<pre><code> public BluetoothService(Context context) {

    }
</code></pre>

<p>connect method: </p>

<pre><code>protected void connect(BluetoothDevice device) {
    try {
    //Create a Socket connection: need the server's UUID number of registered
    BluetoothSocket socket = null;
    socket = device.createRfcommSocketToServiceRecord(MY_UUID);         
    socket.connect();
        //Create temporary input and output stream
         InputStreamtmpIn=socket.getInputStream();                                                      
    OutputStream tmpOut = socket.getOutputStream();

    //for use purposes
    mmSocket = socket;
    mmOutStream = tmpOut;
    mmInStream = tmpIn;

    tmpOut.write("Device connected..".getBytes());

    //start Thread for receiving data over bluetooth
    //dataReceiveThread.start();

    } catch (IOException e) {
        Log.e("Colibri2BB BT", "", e);
    } 
}
</code></pre>
