2016-04-13 2 views
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() ;, он будет работать? –

+0

Это не ошибки, это уведомления от Ant. Вы можете вызывать Codename One компоненты из native, но имейте в виду, что это намного сложнее сделать в iOS, и вам нужно решать проблемы с потоками, поскольку Codename. Один компонент должен выполняться на EDT, в то время как собственный код должен выполняться в своем потоке. В приведенной выше ссылке руководства разработчика содержится раздел о собственных обратных вызовах. –

1

Я не знаю, есть ли проблемы с вашим кодом, но вы не можете проверить собственные функции на симуляторе. Вы можете использовать опцию build source sources и загружать исходный код и компилировать его в Android Studio или XCode и тестировать его в этих средах.