コードネームは1でネイティブAndroidコードを試していますが、デバイス上では動作しません。シミュレータを試してみると、メッセージ/エラーもなくなりません。しかし実際のデバイスで同じことが試されたら、メッセージ"NO Support"
を得ました。 NativeCall nt = NativeLookup.create(NativeCall.class);
〜nt
の意味は、null
です。私のコードに間違いはありますか?ネイティブ実装が動作しない
NativeImplコード:
public class NativeCallImpl extends Activity implements userclasses.NativeCall{
public void setNative(String param) {
Intent intent = new Intent(this, UploadData.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
this.getApplicationContext(), 234324243, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (10 * 1000), pendingIntent);
Toast.makeText(getApplicationContext(), "Native call", Toast.LENGTH_LONG).show();
}
public boolean isSupported() {
return true;
}
}
インタフェース:
public interface NativeCall extends NativeInterface{
public void setNative(String mobileNumber);
//public boolean isSupported();
}
コール:デバイスの
private void autoUpdate(){
NativeCall nt= NativeLookup.create(NativeCall.class);
if(nt!=null){
nt.setNative(getMobileNumber());
}else{
Dialog.show("NO Support", "No Native Support", "OK", null);
}
}
スクリーンショット:
あなたは正しいですが、「ライブラリDをコピーしていません:\ PR_work \ checkInOut \ override」をビルド中にエラーが発生する理由は、それがディレクトリです。 ライブラリDをコピーしません:\ PR_work \ checkInOut \ lib \ impl \ cls、それはディレクトリです。 ライブラリD:\ PR_work \ checkInOut \ lib \ impl \ stubsはコピーされません。ディレクトリです。 ライブラリD:\ PR_work \ checkInOut \ native \ internal_tmpをコピーしていません。ディレクトリです。 ライブラリDをコピーしません:\ PR_work \ checkInOut \ native、ディレクトリです.'これはプロジェクトに含めるかどうかです。 –
Dialog.show();のようなネイティブコードでコードネーム1のコンポーネントを使用している場合は動作しますか? –
これは、Antからの通知であるエラーではありません。ただし、Codename Oneコンポーネントをネイティブから呼び出すことはできますが、これはiOSでは難しく、Codename OneコンポーネントはEDTで実行する必要があり、ネイティブコードは独自のスレッドで実行する必要があるため、スレッドの問題に対処する必要があることに注意してください。上記の開発者ガイドのリンクには、ネイティブコールバックに関するセクションがあります。 –