[Q] Downloading a file from web on >= 4.0 - Java for Android App Development

Hey,
First of all I want to say that I'm from Germany, so please don't kill me for my english
I am new to developing apps for android, but I have gathered some experiences in Java.
I am working with the eclipse android developer tool extension.
I want the app to download a file from the internet and store it in a string-variable.
The app should be upward compatible from android 2.2 (Froyo).
But if it's not possible to be both, android >= 4.0 should be enough.
With the following code the download works, but only below android 4.0 (IceCreamSandwich):
Code:
public static String downloadFile(String u) {
StringBuffer s = new StringBuffer("");
try {
URL url = new URL(u);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.connect();
InputStream inputStream = urlConnection.getInputStream();
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
String x = r.readLine();
while(x!= null){
s.append(x+"\n");
x = r.readLine();
}
} catch (MalformedURLException e) {
e.printStackTrace();
return "ERROR";
} catch (IOException e) {
e.printStackTrace();
return "ERROR";
}
return s.toString();
}
The LogCat says:
05-20 14:31:20.172: E/AndroidRuntime(542): FATAL EXCEPTION: main
05-20 14:31:20.172: E/AndroidRuntime(542): android.os.NetworkOnMainThreadException
05-20 14:31:20.172: E/AndroidRuntime(542): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1084)
05-20 14:31:20.172: E/AndroidRuntime(542): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:74)
05-20 14:31:20.172: E/AndroidRuntime(542): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
05-20 14:31:20.172: E/AndroidRuntime(542): at libcore.io.IoBridge.connect(IoBridge.java:112)
05-20 14:31:20.172: E/AndroidRuntime(542): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
05-20 14:31:20.172: E/AndroidRuntime(542): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
05-20 14:31:20.172: E/AndroidRuntime(542): at java.net.Socket.connect(Socket.java:842)
05-20 14:31:20.172: E/AndroidRuntime(542): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:77)
05-20 14:31:20.172: E/AndroidRuntime(542): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
05-20 14:31:20.172: E/AndroidRuntime(542): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
05-20 14:31:20.172: E/AndroidRuntime(542): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
05-20 14:31:20.172: E/AndroidRuntime(542): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
05-20 14:31:20.172: E/AndroidRuntime(542): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
05-20 14:31:20.172: E/AndroidRuntime(542): at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
05-20 14:31:20.172: E/AndroidRuntime(542): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
05-20 14:31:20.172: E/AndroidRuntime(542): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
05-20 14:31:20.172: E/AndroidRuntime(542): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
05-20 14:34:17.322: W/System.err(596): at com.tobstar.testProject.DownloaderClass.downloadFile(DownloaderClass.java:28)
Click to expand...
Click to collapse
The NetworkOnMainThreadException does not say anything.
The permissions for "android.permission.INTERNET" are set, too.
Do I have forgotten anything?
Can someone tell me how I can download a file and read even on andoid >= 4.0 me?
Thank you very much
- tob.star

All of my internet apps have been for 2.3 so I can't give any code examples. But the error in my mind means that in 4.0, they want all network processes to run on a secondary thread and not the main (UI) thread. You will need to create a secondary thread and run your download from there.

Thank you very much!
Problem solved :good: :laugh:

Just to metion that an asynctask is more efficient than a simple thread and when you get used to it more simple.

mushrom said:
Just to metion that an asynctask is more efficient than a simple thread and when you get used to it more simple.
Click to expand...
Click to collapse
You can use a Thread, too. I use Threads in combination with Handlers.
An AsyncTask is a wrapper around those two classes. It might be easier but you can use both.

nikwen said:
You can use a Thread, too. I use Threads in combination with Handlers.
An AsyncTask is a wrapper around those two classes. It might be easier but you can use both.
Click to expand...
Click to collapse
I know, but asynctasks also provides a thread pool wich makes them more efficient, and handlers are not so usefull when you want to make your code reusable.

mushrom said:
I know, but asynctasks also provides a thread pool wich makes them more efficient, and handlers are not so usefull when you want to make your code reusable.
Click to expand...
Click to collapse
I did not know that. Thanks. :good:

Related

Vibration in WM6 Pro

Hey Guys
How can I get access to the vibration function on a device running Windows Mobile 6 Professional, the Vibrate API is not supported (according to MSDN)?
I do basic development in native C++ using Visual Studio using SDKs for WM5 an 6.
Any help will be appreciated!
Code:
#include "stdafx.h"
# include <nled.h>
int GetLedCount()
{
NLED_COUNT_INFO nci;
int wCount = 0;
if(NLedGetDeviceInfo(NLED_COUNT_INFO_ID, (PVOID) &nci))
wCount = (int) nci.cLeds;
return wCount;
}
void SetLedStatus(int wLed, int wStatus)
{
NLED_SETTINGS_INFO nsi;
nsi.LedNum = (INT) wLed;
nsi.OffOnBlink = (INT) wStatus;
NLedSetDevice(NLED_SETTINGS_INFO_ID, &nsi);
}
int _tmain(int argc, _TCHAR* argv[])
{
int count = GetLedCount();
SetLedStatus(1, 1);
Sleep(1000);
SetLedStatus(1, 0);
Sleep(1000);
return 0;
}
You need to test which LED number (int wLed) the device uses. Mostly it is 1.
Thank you MarcLandis, this information help a great deal and works like a charm!

[CODE] Detect the NK.EXE version (6.1 or 6.5)

Code:
public static bool IsKernelNative(string NKS000File)
{
int[] pattern = new int[] { 0x0C, 0x00, 0x94, 0xE5, 0x1F, 0x03, 0x50, 0xE3 };
int lookingfor = 0;
using (FileStream input = new FileStream(NKS000File, FileMode.Open, FileAccess.Read))
{
for (int i = 0; i < input.Length; i++)
if (input.ReadByte() == pattern[lookingfor++])
{
if (lookingfor == (pattern.Length - 1))
break;
}
else lookingfor = 0;
}
return (lookingfor == (pattern.Length - 1));
}
Barin will probably be happy to have this (and probably be even happier to replace the code with a File.ReadAllBytes and a LINQ array search if he didn't chose to use NET 2.0 like I did).
very interesting. what does this array (0x0C, 0x00, 0x94, 0xE5, 0x1F, 0x03, 0x50, 0xE3) mean? i.e. what code does it contain? it really can be found in new kernels only.
airxtreme, thanks for the info
But why should i be happy? When i build a rom i know exactly which kernel i use
Anyway i'll add the code to show info about kernel in log window.
PS I don't use .ReadAllBytes method to search a pattern. Sometimes i use it when i need to keep something in memory.
Check your decompiler
l2tp said:
very interesting. what does this array (0x0C, 0x00, 0x94, 0xE5, 0x1F, 0x03, 0x50, 0xE3) mean? i.e. what code does it contain? it really can be found in new kernels only.
Click to expand...
Click to collapse
I don't remember what it exactly does since it's stuff from several months ago but it should be code that is related to the new slots allocation that can be found only on windows mobile 6.5 kernels.
-=Barin=- said:
airxtreme, thanks for the info
But why should i be happy? When i build a rom i know exactly which kernel i use
Anyway i'll add the code to show info about kernel in log window.
Click to expand...
Click to collapse
You certainly do but for first-time users it's not so immediate understanding that each device requires its own native kernel, that the kernel is specifically compiled for the windows mobile version it came with and that even though an old kernel may work on newer windows mobile builds the kitchen needs to know the version of the native kernel to do the proper slots allocation and if it's not chosen correctly the ROM could not work. If you auto-detect the kernel and remove the kernel selection option (that in the case of your kitchen being only labeled WM6.1/WM6.5 I think may confuse users into thinking the option has to do with the windows mobile version rather than the native kernel version) you can remove a considerable burden from beginners.

[Tilapia] Rom dont boot on tilapia but works on grouper?

Hi,
I built a rom for tilapia which don't boot on tilapia but it boots on grouper and I hope some can give a hint to solve the problem (its an aosp rom, working fine on mako too).
(I think the problem is that dalvik crashes, but why? :
Code:
W/dalvikvm( 4808): No implementation found for native Ldalvik/system/Zygote;.nativeForkAndSpecialize:(II[II[[IILjava/lang/String;Ljava/lang/String;)I
D/AndroidRuntime( 4808): Shutting down VM
W/dalvikvm( 4808): threadid=1: thread exiting with uncaught exception (group=0x4192fba8)
I/ServiceManager( 121): service 'media.audio_flinger' died
...
)
sorry for bad english
edit:
works now, thread may be closed or deleted
can u tell me how you fixed this?
Can you explain how you fixed it?
vetzki said:
Hi,
I built a rom for tilapia which don't boot on tilapia but it boots on grouper and I hope some can give a hint to solve the problem (its an aosp rom, working fine on mako too).
(I think the problem is that dalvik crashes, but why? :
Code:
W/dalvikvm( 4808): No implementation found for native Ldalvik/system/Zygote;.nativeForkAndSpecialize:(II[II[[IILjava/lang/String;Ljava/lang/String;)I
D/AndroidRuntime( 4808): Shutting down VM
W/dalvikvm( 4808): threadid=1: thread exiting with uncaught exception (group=0x4192fba8)
I/ServiceManager( 121): service 'media.audio_flinger' died
...
)
sorry for bad english
edit:
works now, thread may be closed or deleted
Click to expand...
Click to collapse

Hello world, I'm noob

First, my English isn't good
I am a high school student from Spain, I work in a research study (TREC) about Android.
I decided to develop an application where I am going to release it.
Because in my class everybody has an Android device but no one knows how use it.
I know much about Android but I will need help to develop my app. because I have never developed.
nowadays I use Android studio, I learned about Activity Main, strings, Id...
But I don't know java code
I need tips, assistance,etc... please.
ronnyalexman said:
But I don't know java code
I need tips, assistance,etc... please.
Click to expand...
Click to collapse
Then learn java... there is an absolute wealth of information on the interwebz about java coding and beginner lessons for java development, even a simple Google search shows up a lot of relevant information and lessons.
thanks
Jonny said:
Then learn java... there is an absolute wealth of information on the interwebz about java coding and beginner lessons for java development, even a simple Google search shows up a lot of relevant information and lessons.
Click to expand...
Click to collapse
It's my problem, a lot information that it isn't I need it
What's your plan?
Java for beginners
Start from scratch. Search on google for "java for bigginers" and read. You cant know to much when it comes to programming. Eclipse have some nice video tutorials on there site, check them out.
ronnyalexman said:
First, my English isn't good
I am a high school student from Spain, I work in a research study (TREC) about Android.
I decided to develop an application where I am going to release it.
Because in my class everybody has an Android device but no one knows how use it.
I know much about Android but I will need help to develop my app. because I have never developed.
nowadays I use Android studio, I learned about Activity Main, strings, Id...
But I don't know java code
I need tips, assistance,etc... please.
Click to expand...
Click to collapse
Try learning the syntax of Java. Programming is about thinking in your head about how you'll do something in code and no one can teach you how to think. You can only be taught the syntax and then your mind goes from there (or doesn't). Next learn the basics of Android Development. Start on the tutorials on developer.android.com and go from there. Also, your going to need to be best friends with Google Search.
thanks for your interest
Allavaz said:
What's your plan?
Click to expand...
Click to collapse
My idea is going to be an application for release to Android easily, like wikipedia or more webs.
An app where I will put my research study but first I must finish it.
My research studies index:
What is it??
History of Android
everyday Use
What can you really do with Android?
Body of work
1. How is architecture? (chart diagram)
2. General properties
3. Versions of Android (timeline)
7. Root
What is it?
Benefits and drawbacks.
Grant permissions as root?
Applications for use of the root.
5. Apps
Structure of the applications
Applications famous and best developers
6. Terminals Best (past, present and future)
7. Webs expert on the subject (Where to get help)
8. Curiosities
I don't want to earn money only need help
Be specific so I can help you. I speak spanish too.
Gracias por tu atención
Allavaz said:
Be specific so I can help you. I speak spanish too.
Click to expand...
Click to collapse
Mi idea para la aplicación es poner todo el contenido de mi trabajo teórico (que es android, ventajas que tiene, que se puede llegar a hacer con este SO, que significa ser root y sus ventajas, etc....) todo eso dentro de mi app de manera que se de entender de manera resumida o detallada (quiero hacer modo resumen o modo completo)
Ya que vivimos en la era de los smartphones pero ni la mitad de sus usuarios tienen idea de su potencial.
Gracias por tu ayuda
One question!!!!!!!!
how to make an exit button?
step by step
I have the button exit, but I don't know the java code for the action exit
Activity_my.xml
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/btExit"
android:id="@+id/buttonexit"
android:layout_marginTop="20dp"
android:background="#ff000000"
android:textColor="#ffffeaed" />
MyActivity.java
??
ronnyalexman said:
how to make an exit button?
step by step
I have the button exit, but I don't know the java code for the action exit
Activity_my.xml
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/btExit"
android:id="@+id/buttonexit"
android:layout_marginTop="20dp"
android:background="#ff000000"
android:textColor="#ffffeaed" />
MyActivity.java
??
Click to expand...
Click to collapse
Ok first will you please stick to the java naming conventions, they are there for a reason. This means that the id for the exit button should be something like buttonExit or exitButton, not buttonexit.
Then what you want to do is find the view in your MainActivity by using findViewById, then set an OnClickListener for that view. The code to exit the app is simply finish();
Put this in the onCreate method of MainActivity (after setContentView has been called).
Code:
Button exitButton = (Button) findViewById(R.id.buttonexit);
exitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Also in future, please search before posting, a quick Google on this would have easily got you an answer.
Without XML:
Code:
Button exitButton = new Button(this);
exitButton.setText(R.string.exit);
exitButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
rootView.addSubView(exitButton);
Thanks
Jonny said:
Ok first will you please stick to the java naming conventions, they are there for a reason. This means that the id for the exit button should be something like buttonExit or exitButton, not buttonexit.
Then what you want to do is find the view in your MainActivity by using findViewById, then set an OnClickListener for that view. The code to exit the app is simply finish();
Put this in the onCreate method of MainActivity (after setContentView has been called).
Code:
Button exitButton = (Button) findViewById(R.id.buttonexit);
exitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Also in future, please search before posting, a quick Google on this would have easily got you an answer.
Click to expand...
Click to collapse
I searched much information on Google, but I saw a lot code and was confused.
Thanks for your clarification
Hi ^^
He estado progresando con mi proyecto, pero ahora me he atascado de nuevo
Mi problema es el siguiente:
Hice un ListView personalizado con los siguientes códigos:
package trecandroid.ronny.gmail.com.trecandroid;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import trecandroid.ronny.gmail.com.trecandroid.adapter.AdaptadorTitulares;
import trecandroid.ronny.gmail.com.trecandroid.personal.Titular;
public class Arquitectura extends Activity {
ListView lista;
@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.arquitectura);
lista = (ListView) findViewById(R.id.lista);
Titular[] args = new Titular[]{
new Titular(R.drawable.aplicaciones),
new Titular(R.drawable.framework),
new Titular(R.drawable.runtime),
new Titular(R.drawable.librerias),
new Titular(R.drawable.kernel),
};
AdaptadorTitulares adap = new AdaptadorTitulares(this, args);
lista.setAdapter(adap);
}
}
package trecandroid.ronny.gmail.com.trecandroid.personal;
/**
* Created by Ronny on 26/08/2014.
*/
public class Titular {
private int img;
public Titular (int img){
this.img = img;
}
public int getImg(){
return img;
}
public void setImagen(int img) {
this.img = img;
}
}
package trecandroid.ronny.gmail.com.trecandroid.adapter;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import trecandroid.ronny.gmail.com.trecandroid.R;
import trecandroid.ronny.gmail.com.trecandroid.personal.Titular;
/**
* Created by Ronny on 26/08/2014.
*/
public class AdaptadorTitulares extends ArrayAdapter {
Activity context;
Titular[] datos;
public AdaptadorTitulares(Activity context, Titular[] datos) {
super(context, R.layout.lista_personal , datos);
this.datos = datos;
this.context = context;
}
@override
public View getView (int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View item = inflater.inflate(R.layout.lista_personal, null);
ImageView imagen = (ImageView) item.findViewById(R.id.imageViewlista);
imagen.setImageResource(datos[position].getImg());
return item;
}
}
Ahora quiero que al tocar "R:drawable,aplicaciones" me lleve a un Layout que he creado.
Y lo mismo con "R.drawable.framework" etc..
He buscado por San Google, pero no lo encuentro.
Ya nada, gracias.
ronnyalexman said:
He estado progresando con mi proyecto, pero ahora me he atascado de nuevo
Mi problema es el siguiente:
Hice un ListView personalizado con los siguientes códigos:
package trecandroid.ronny.gmail.com.trecandroid;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import trecandroid.ronny.gmail.com.trecandroid.adapter.AdaptadorTitulares;
import trecandroid.ronny.gmail.com.trecandroid.personal.Titular;
public class Arquitectura extends Activity {
ListView lista;
@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.arquitectura);
lista = (ListView) findViewById(R.id.lista);
Titular[] args = new Titular[]{
new Titular(R.drawable.aplicaciones),
new Titular(R.drawable.framework),
new Titular(R.drawable.runtime),
new Titular(R.drawable.librerias),
new Titular(R.drawable.kernel),
};
AdaptadorTitulares adap = new AdaptadorTitulares(this, args);
lista.setAdapter(adap);
}
}
package trecandroid.ronny.gmail.com.trecandroid.personal;
/**
* Created by Ronny on 26/08/2014.
*/
public class Titular {
private int img;
public Titular (int img){
this.img = img;
}
public int getImg(){
return img;
}
public void setImagen(int img) {
this.img = img;
}
}
package trecandroid.ronny.gmail.com.trecandroid.adapter;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import trecandroid.ronny.gmail.com.trecandroid.R;
import trecandroid.ronny.gmail.com.trecandroid.personal.Titular;
/**
* Created by Ronny on 26/08/2014.
*/
public class AdaptadorTitulares extends ArrayAdapter {
Activity context;
Titular[] datos;
public AdaptadorTitulares(Activity context, Titular[] datos) {
super(context, R.layout.lista_personal , datos);
this.datos = datos;
this.context = context;
}
@override
public View getView (int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View item = inflater.inflate(R.layout.lista_personal, null);
ImageView imagen = (ImageView) item.findViewById(R.id.imageViewlista);
imagen.setImageResource(datos[position].getImg());
return item;
}
}
Ahora quiero que al tocar "R:drawable,aplicaciones" me lleve a un Layout que he creado.
Y lo mismo con "R.drawable.framework" etc..
He buscado por San Google, pero no lo encuentro.
Click to expand...
Click to collapse
Pude solucionarlo yo solo ^^
ronnyalexman said:
First, my English isn't good
I am a high school student from Spain, I work in a research study (TREC) about Android.
I decided to develop an application where I am going to release it.
Because in my class everybody has an Android device but no one knows how use it.
I know much about Android but I will need help to develop my app. because I have never developed.
nowadays I use Android studio, I learned about Activity Main, strings, Id...
But I don't know java code
I need tips, assistance,etc... please.
Click to expand...
Click to collapse
google have now free online course for android with name udacity ... try it
thanks for information
sekip said:
google have now free online course for android with name udacity ... try it
Click to expand...
Click to collapse
Thanks, but the course cost 150$. I don't have much money
ronnyalexman said:
Thanks, but the course cost 150$. I don't have much money
Click to expand...
Click to collapse
but you have 2 week free trial :victory:

Finow/Lemfo WatchHelper app - handling force close

I'm struggling with WatchHelper application with my Finow X5+ (AFAIK Lemfo LEM5 is the same) to get it working more stable - no FC, proper reconnects (after link is lost), get rid of awful "link lost" sound&alert.
I've noticed that FC is caused by SecurityException (Android 6.0 on MotoX 2014):
Code:
01-30 17:37:53.484 E/AndroidRuntime( 7304): FATAL EXCEPTION: main
01-30 17:37:53.484 E/AndroidRuntime( 7304): Process: com.android.BluetoothSocketTest:remote, PID: 7304
[COLOR="Red"]01-30 17:37:53.484 E/AndroidRuntime( 7304): java.lang.SecurityException: com.android.BluetoothSocketTest from uid 10103 not allowed to perform SYSTEM_ALERT_WINDOW[/COLOR]
01-30 17:37:53.484 E/AndroidRuntime( 7304): at android.os.Parcel.readException(Parcel.java:1599)
01-30 17:37:53.484 E/AndroidRuntime( 7304): at android.os.Parcel.readException(Parcel.java:1552)
01-30 17:37:53.484 E/AndroidRuntime( 7304): at android.view.IWindowSession$Stub$Proxy.addToDisplay(IWindowSession.java:747)
01-30 17:37:53.484 E/AndroidRuntime( 7304): at android.view.ViewRootImpl.setView(ViewRootImpl.java:543)
01-30 17:37:53.484 E/AndroidRuntime( 7304): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:310)
01-30 17:37:53.484 E/AndroidRuntime( 7304): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
01-30 17:37:53.484 E/AndroidRuntime( 7304): at android.app.Dialog.show(Dialog.java:319)
01-30 17:37:53.484 E/AndroidRuntime( 7304): at com.android.BluetoothSocketTest.ag.handleMessage(Unknown Source)
so I gave this permission (using App Ops) and it's a lot better now, no FC at all And I've gained auto-reconnections working also. So double win.
But I'd like to know if other users are in the same situation - if you use Watch Helper try to get logcat (CatLog from app store, root required) and search for "FATAL EXCEPTION". Then share here all stacktrace. I'd like to verify if there are different problems with this app or it's just this.
Second thing is to get rid of awful "link loss" sound & alert window. I've just wrote XPosed module and it looks like it's working. Still in alpha phase, but after few days of use I'll publish it with source code. Maybe someone will be interested in continuing it?
Hi,
I have the same problem. with a galaxy s7 edge and a lemfo lem5.
Is there any chance to give that permitions without root privileges ?
rufik said:
I'm struggling with WatchHelper application with my Finow X5+ (AFAIK Lemfo LEM5 is the same) to get it working more stable - no FC, proper reconnects (after link is lost), get rid of awful "link lost" sound&alert.
I've noticed that FC is caused by SecurityException (Android 6.0 on MotoX 2014):
Code:
01-30 17:37:53.484 E/AndroidRuntime( 7304): FATAL EXCEPTION: main
01-30 17:37:53.484 E/AndroidRuntime( 7304): Process: com.android.BluetoothSocketTest:remote, PID: 7304
[COLOR="Red"]01-30 17:37:53.484 E/AndroidRuntime( 7304): java.lang.SecurityException: com.android.BluetoothSocketTest from uid 10103 not allowed to perform SYSTEM_ALERT_WINDOW[/COLOR]
01-30 17:37:53.484 E/AndroidRuntime( 7304): at android.os.Parcel.readException(Parcel.java:1599)
01-30 17:37:53.484 E/AndroidRuntime( 7304): at android.os.Parcel.readException(Parcel.java:1552)
01-30 17:37:53.484 E/AndroidRuntime( 7304): at android.view.IWindowSession$Stub$Proxy.addToDisplay(IWindowSession.java:747)
01-30 17:37:53.484 E/AndroidRuntime( 7304): at android.view.ViewRootImpl.setView(ViewRootImpl.java:543)
01-30 17:37:53.484 E/AndroidRuntime( 7304): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:310)
01-30 17:37:53.484 E/AndroidRuntime( 7304): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
01-30 17:37:53.484 E/AndroidRuntime( 7304): at android.app.Dialog.show(Dialog.java:319)
01-30 17:37:53.484 E/AndroidRuntime( 7304): at com.android.BluetoothSocketTest.ag.handleMessage(Unknown Source)
so I gave this permission (using App Ops) and it's a lot better now, no FC at all And I've gained auto-reconnections working also. So double win.
But I'd like to know if other users are in the same situation - if you use Watch Helper try to get logcat (CatLog from app store, root required) and search for "FATAL EXCEPTION". Then share here all stacktrace. I'd like to verify if there are different problems with this app or it's just this.
Second thing is to get rid of awful "link loss" sound & alert window. I've just wrote XPosed module and it looks like it's working. Still in alpha phase, but after few days of use I'll publish it with source code. Maybe someone will be interested in continuing it?
Click to expand...
Click to collapse
Hi. Have same issue with my Galaxy S8plus and Finow X5air. my phone is not rooted and I try to return this watches but if I will find a solution I will keep this watch Any Idea what to do
Thank you

Categories

Resources