2016-12-02 14 views
1

Может кто-то мне помочь ....EMDK Android Studio

Я не могу принять намерение от Symbol TC75 сканера. У меня есть профиль настройки, который отправляет намерение моему приложению, мое приложение получает нулевой смысл.

Я поместил этот код в файл MainFest ....

<uses-permission android:name="com.symbol.emdk.permission.EMDK" /> 
     <uses-library android:name="com.symbol.emdk"/> 

<activity 
     android:name=".aufladen" 
     android:screenOrientation="portrait" 
     android:launchMode="singleTask"> 
     <intent-filter> 
      <action android:name="com.draganm.mpreiscontainertracking.BARCODE" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

в OnCreate я поставил этот

EMDKResults results = EMDKManager.getEMDKManager(this.getApplicationContext(), this); 


    if(results.statusCode == STATUS_CODE.FAILURE) 
    { 
     //Failed to create EMDKManager object 
    } 
    Intent i = getIntent(); 
    handleDecodeData(i); 


@Override 
public void onNewIntent(Intent i) { 
    handleDecodeData(i); 
} 

private void handleDecodeData(Intent i) { 
    if (i.getAction().contentEquals("com.draganm.mpreiscontainertracking.BARCODE")) { 
     String data = i.getStringExtra("com.motorolasolutions.emdk.datawedge.data_string"); 

     if (data != null && data.length() > 0) { 
     } 
     Toast.makeText(this, data, Toast.LENGTH_LONG).show(); 
    } 
} 

После того как я играть это приложение на реальном устройстве я получаю эту ошибку в журнале

FATAL EXCEPTION: main 
                       Process: com.draganm.mpreiscontainertracking, PID: 5163 
                       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.draganm.mpreiscontainertracking/com.draganm.mpreiscontainertracking.aufladen}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.contentEquals(java.lang.CharSequence)' on a null object reference 
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                        at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                        at android.os.Handler.dispatchMessage(Handler.java:102) 
                        at android.os.Looper.loop(Looper.java:135) 
                        at android.app.ActivityThread.main(ActivityThread.java:5254) 
                        at java.lang.reflect.Method.invoke(Native Method) 
                        at java.lang.reflect.Method.invoke(Method.java:372) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) 
                       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.contentEquals(java.lang.CharSequence)' on a null object reference 
                        at com.draganm.mpreiscontainertracking.aufladen.handleDecodeData(aufladen.java:610) 
                        at com.draganm.mpreiscontainertracking.aufladen.onCreate(aufladen.java:101) 
                        at android.app.Activity.performCreate(Activity.java:6012) 
                        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)  
                        at android.app.ActivityThread.access$800(ActivityThread.java:151)  
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)  
                        at android.os.Handler.dispatchMessage(Handler.java:102)  
                        at android.os.Looper.loop(Looper.java:135)  
                        at android.app.ActivityThread.main(ActivityThread.java:5254)  
                        at java.lang.reflect.Method.invoke(Native Method)  
                        at java.lang.reflect.Method.invoke(Method.java:372)  
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)  
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)  
+0

'я .getAction() 'равна нулю –

ответ

2

Я думаю, вы сбиваете с толку различные способы получения отсканированных данных. Задания отправляются только из службы DataWedge (http://techdocs.zebra.com/datawedge/6-0/guide/about/), но вы также инициализируете библиотеку EMDK (http://techdocs.zebra.com/emdk-for-android/6-0/guide/gettingstarted/). EMDK возвращает свои данные через обратный вызов.

Если вы выбираете маршрут DataWedge, у меня есть приложение, которое прослушивает намерения DataWedge, которые могут помочь: https://github.com/darryncampbell/DataWedge-API-Exerciser

Если вы выбираете маршрут EMDK, есть образцы на собственном сайте компании Zebra: http://techdocs.zebra.com/emdk-for-android/6-0/samples/barcode/

+0

После нескольких дней поисков я нашел решение ..... Я должен вставить super.onNewIntent в onNewIntent Methode @Override общественного недействительными onNewIntent (Intent я) { super.onNewIntent (I); handleDecodeData (i); } Но ваш ответ помог мне больше понять это спасибо :) – Pecurka