Первый раз пробую нативный интерфейс с Codename one для андроида. Я пытаюсь использовать приведенный ниже код, чтобы получить хранилище данных на сервере в фоновом режиме через определенное время, даже если приложение не запущено. Я не рассматриваю, включен ли сервис передачи данных / Wi-Fi или нет. Чтобы это сделать, я создаю нативную реализацию через Codename one. После того, как Google так много и перепробовал слишком много методов, все еще получаю ту же ошибку Looper.prepare();
для вызова обработчика. Код одной из моих попыток через service
ниже. Я не программист Android, поэтому, пожалуйста, не считайте меня экспертом в Android.
Код в собственном Impl:
public class NativeCallImpl {
public void setNative(String param) {
implCall ic = new implCall();
ic.Native(param);
}
public boolean isSupported() {
return true;
}
}
реализовать класс вызова:
class implCall extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //To change body of generated methods, choose Tools | Templates.
}
public void Native(String param) {
try {
Toast.makeText(this, param, Toast.LENGTH_LONG).show();
Intent intent = new Intent(getApplicationContext(), UploadData.class);
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTime().getTime(), 10000, pendingIntent);
//startService(intent);
} catch (Exception e) {
Toast.makeText(this, "Error " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}
Класс, вызываемый в Intent:
public class UploadData extends Service {
@Override
public void onStart(Intent intent, int startid) {
//return super.onStartCommand(intent, flags, startId); //To change body of generated methods, choose Tools | Templates.
try {
String data = URLEncoder.encode("mobileNumber", "UTF-8") + "="
+ URLEncoder.encode(user.user.getMobileNumber(), "UTF-8");
data += "&" + URLEncoder.encode("EventName", "UTF-8")
+ "=" + URLEncoder.encode("na", "UTF-8");
data += "&" + URLEncoder.encode("Status", "UTF-8")
+ "=" + URLEncoder.encode("auto", "UTF-8");
data += "&" + URLEncoder.encode("Latitude", "UTF-8")
+ "=" + URLEncoder.encode("lat", "UTF-8");
data += "&" + URLEncoder.encode("Longitude", "UTF-8")
+ "=" + URLEncoder.encode("long", "UTF-8");
data += "&" + URLEncoder.encode("Address", "UTF-8")
+ "=" + URLEncoder.encode("na", "UTF-8");
data += "&" + URLEncoder.encode("imageCode", "UTF-8")
+ "=" + URLEncoder.encode("na", "UTF-8");
URL url = new URL("http://example.com/appFiles/checkInOut/checkInOut.php");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
} catch (Exception ex) {
//Toast.makeText(null, ex.toString(), Toast.LENGTH_LONG).show();
System.out.println(ex.getMessage());
}
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Сообщение об ошибке :