2016-04-13 23 views
1

コードネームは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); 
    } 
} 

スクリーンショット:

enter image description here

答えて

1

デバイスケーブルを接続してDDMSを実行すると、コンソールに例外が表示されることがあります。

ネイティブインターフェイスの実装でActivityを拡張しないでください。アクティビティが必要な場合は、別のクラスを追加してください。

implクラスにネイティブインターフェイスを実装しないでください。特にこれを削除してください:implements userclasses.NativeCall。ピアコンポーネントを操作すると問題が発生します...

詳細については、developer guide section on native interfacesを参照してください。

+0

あなたは正しいですが、「ライブラリ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、ディレクトリです.'これはプロジェクトに含めるかどうかです。 –

+0

Dialog.show();のようなネイティブコードでコードネーム1のコンポーネントを使用している場合は動作しますか? –

+0

これは、Antからの通知であるエラーではありません。ただし、Codename Oneコンポーネントをネイティブから呼び出すことはできますが、これはiOSでは難しく、Codename OneコンポーネントはEDTで実行する必要があり、ネイティブコードは独自のスレッドで実行する必要があるため、スレッドの問題に対処する必要があることに注意してください。上記の開発者ガイドのリンクには、ネイティブコールバックに関するセクションがあります。 –

1

あなたのコードに問題があるかどうかはわかりませんが、シミュレータでネイティブ機能をテストすることはできません。インクルードソースビルドオプションを使用して、ソースコードをダウンロードし、Android StudioまたはXCodeでコンパイルし、それらの環境でテストすることができます。

関連する問題