Have you looked at Android's own Power Controls widget? It's part of
Settings application.

Also, is it possible you're dealing with some heavily modified, buggy
firmware?
 20.04.2011 18:00 пользователь "b_t" <bartata...@gmail.com> написал:
> The original stack trace is:
>
> Caused by: java.lang.RuntimeException: Can't create handler inside
> thread that has not called Looper.prepare()
> at android.os.Handler.<init>(Handler.java:121)
> at android.bluetooth.BluetoothAdapter
> $1.<init>(BluetoothAdapter.java:961)
> at
> android.bluetooth.BluetoothAdapter.<init>(BluetoothAdapter.java:961)
> at
>
android.bluetooth.BluetoothAdapter.getDefaultAdapter(BluetoothAdapter.java:
> 308)
> *** myTask.doInBackground() ***
> at android.os.AsyncTask$2.call(AsyncTask.java:185)
> at java.util.concurrent.FutureTask
> $Sync.innerRun(FutureTask.java:305)
> at java.util.concurrent.FutureTask.run(FutureTask.java:137)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
> 1068)
> at java.util.concurrent.ThreadPoolExecutor
> $Worker.run(ThreadPoolExecutor.java:561)
> at java.lang.Thread.run(Thread.java:1102)
>
> I try to explain what I want:
>
> - I have an appwidget with a bluetooth toggle
> - If the bluetooth state changes the appwidget will be updated
> - If I click on the appwidget than I toggle bluetooth state
>
> If I click on the toggle:
>
> - an IntentService will be executed
> - it creates a Handler and displays a toast by Handler.post() with the
> message "turning off..."
> - I change bluetooth state
> - bluetooth state changes so my broadcast receiver tries to update
> appwidget
>
> If I update appwidget in a service than everything is ok except that
> APN can occur if the
> update process is slow for some reason.
>
> I would like to put appwidget update mechanism into an AsyncTask.
> But because of BluetoothAdapter.getDefaultAdapter creates a Handler
> (in some roms) it throws
> the exception above.
>
> If I put Looper.prepare() in the begin of doInBackground, then the
> following error occurs
> for a thread (there are five asynctask thread in my device so it
> happens very early)
>
> java.lang.RuntimeException: Only one Looper may be created per
> thread
>
> If I use the following code:
>
> Looper myLooper = Looper.myLooper();
> if (myLooper == null) {
> Looper.prepare();
> }
>
> than everything seems fine except one thing: to toast I would like to
> display
> in the beginning of the process will be displayed much time later.
>
> I don't know why and how can I avoid it.
>
> I hope somebody understand my problem and can give me a solution.
>
> T.
>
>
> On Apr 20, 10:17 am, Kostya Vasilyev <kmans...@gmail.com> wrote:
>> You could try calling Looper.prepare() first thing in doInBackground().
>>
>> Oh, and logcat output would help us help you, as usual.
>>
>> -- Kostya
>>
>> 20.04.2011 12:07, b_t пишет:
>>
>> > Hi,
>>
>> > In my app I was going to use an AsyncTask to update appwidget data
>> > because this process can be long. To get the state I have to call
>> > BluetoothAdapter.getDefaultAdapter(). The problem is that in some
>> > device (not in mine) it tries to initialize a Handler and throws
>> > Exception about
>> > missing Looper.
>>
>> > I don't know what should I do.
>>
>> --
>> Kostya Vasilyev --http://kmansoft.wordpress.com
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to