2

Android用のCodename oneを使用したネイティブインターフェイスを初めて試します。アプリケーションが実行されていない場合でも、特定の時間後にバックグラウンドでサーバー上のデータストアを取得するために、以下のコードを試します。データサービス/wifiが有効かどうかは考慮していません。これを実現するために、Codename one を使用してネイティブ実装を作成します。あまりにも多くの方法をグーグルで試した後でもLooper.prepare();、ハンドラーで呼び出すには同じエラーが発生します。私の試みの1つのコード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;
}

}

エラーメッセージ :

ここに画像の説明を入力

4

1 に答える 1