Autore Topic: Invocare una activity presente in un jar  (Letto 1208 volte)

Offline teogrem

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Windows 7
Invocare una activity presente in un jar
« il: 13 Settembre 2011, 13:05:15 CEST »
0
Salve a tutti,

sto lavorando su un app per la scansione di codice a barre e QR, sono riuscito ad implementare le librerie di zxing in modo da non dovermi appoggiare ad un altra app per la scansione dei codici.
Il mio problema nasce da quando ho deciso di creare un jar con le librerie di zxing, in poche parole non riesco a richiamare dalla mia activity l'INTENT  per far partire la scansione, prima facevo così e tutto funzionava:
Codice (Java): [Seleziona]
Intent SCAN_INTENT = new Intent("com.google.zxing.client.android.SCAN");
SCAN_INTENT.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE","QR_CODE_MODE" );
startActivityForResult(SCAN_INTENT, 0);

Il LogCat mi restituisce il seguente errore:
Codice: [Seleziona]
ERROR/AndroidRuntime(17201): FATAL EXCEPTION: main
 ERROR/AndroidRuntime(17201): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.google.zxing.client.android/com.google.zxing.client.android.CaptureActivity}; have you declared this activity in your AndroidManifest.xml?
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1405)

Chiaramente l'activity l'ho dichiarata nel manifest....mi sono affacciato da poco al mondo android, scusatemi in anticipo se sto riportando un questito banale, ma non ho trovato nulla in rete.

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Invocare una activity presente in un jar
« Risposta #1 il: 13 Settembre 2011, 16:59:54 CEST »
0
prova a postare il menifest
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline teogrem

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Windows 7
Re:Invocare una activity presente in un jar
« Risposta #2 il: 13 Settembre 2011, 17:40:43 CEST »
0
Ecco qua una parte del manifest:
Codice (XML): [Seleziona]
<application android:icon="@drawable/icona"
              android:label="@string/app_name"
              android:theme="@style/CustomTheme">
               
   <activity android:name="com.google.zxing.client.android.CaptureActivity"
             android:screenOrientation="landscape"
             android:configChanges="orientation|keyboardHidden"
             android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
             android:windowSoftInputMode="stateAlwaysHidden">
     
      <intent-filter>
        <action android:name="com.google.zxing.client.android.SCAN"/>
        <category android:name="android.intent.category.DEFAULT"/>
      </intent-filter>
    </activity>
   
   
   
    <activity android:name=".Splash"
                 android:label="@string/app_name"
                 android:screenOrientation="portrait">
                          <intent-filter>
                                <action android:name="android.intent.action.MAIN" />
                                <category android:name="android.intent.category.LAUNCHER" />
                        </intent-filter>
        </activity>

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Invocare una activity presente in un jar
« Risposta #3 il: 13 Settembre 2011, 17:48:11 CEST »
0
Ti rispondo da ignorante su questo argomento, perciò prendila con le pinze.
Citazione
<activity android:name="com.google.zxing.client.android.CaptureActivity"
non dovrebbe essere
Codice (XML): [Seleziona]
 <activity android:name=".com.google.zxing.client.android.CaptureActivity"
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline teogrem

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Windows 7
Re:Invocare una activity presente in un jar
« Risposta #4 il: 13 Settembre 2011, 18:10:02 CEST »
0
Il nome dell' activity è "CaptureActivity" ed è relativo al package "com.google.zxing.client.android" , a questa activity è associato un intent-filter con action "com.google.zxing.client.android.SCAN" , quindi quando richiamo questa activity tramite un intent la chiamo tramite l'action anche perchè come ho detto in precedenza prima che creassi il file .jar l'attività veniva richiamata correttamente.
Il problema, è che adesso questa activity è dentro il .jar e non riesco a richiamarla come facevo prima.

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Invocare una activity presente in un jar
« Risposta #5 il: 13 Settembre 2011, 23:16:12 CEST »
0
Dove hai messo il file .jar ? Hai fatto il Build Path del file jar ?
Nel caso non l'avessi fatto : in Eclipse tasto destro sul file poi Build Path -> Add to Build Path

Offline teogrem

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Windows 7
Re:Invocare una activity presente in un jar
« Risposta #6 il: 13 Settembre 2011, 23:20:40 CEST »
0
L'ho messo dentro la cartella libs, si ho fatto il build path....

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Invocare una activity presente in un jar
« Risposta #7 il: 13 Settembre 2011, 23:49:34 CEST »
0
Anch'io integrai zxing in modo stand-alone, ma l'avevo importato come libreria android non come file.jar.
Per creare il jar hai usato il tool nativo di java o Apache ant ?
Prova a dare un'occhiata qui : http://stackoverflow.com/questions/4782543/integration-zxing-library-directly-into-my-android-application

Offline teogrem

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Windows 7
Re:Invocare una activity presente in un jar
« Risposta #8 il: 14 Settembre 2011, 10:52:33 CEST »
0
Per creare il .jar ho usato tool nativo di java, quel link che mi hai postato l'avevo  già visto e l'avevo usato per compilare il core di zxing...

Offline teogrem

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Windows 7
Re:Invocare una activity presente in un jar
« Risposta #9 il: 14 Settembre 2011, 14:30:07 CEST »
0
Ho provato a rifare il file .jar e a rifare il build path, il logCat ora mi restituisce questo errore:

Codice: [Seleziona]
ERROR/AndroidRuntime(740): java.lang.RuntimeException: Unable to resume activity {com.itel.smartmobile/com.google.zxing.client.android.CaptureActivity}: java.lang.NullPointerException
ERROR/AndroidRuntime(740): Caused by: java.lang.NullPointerException

In poche parole non trova l'intent riferito all'activity, qualche suggerimento?

Offline teogrem

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Windows 7
Re:Invocare una activity presente in un jar
« Risposta #10 il: 15 Settembre 2011, 10:21:38 CEST »
0
Non c'è nessuno che riesce ad aiutarmi?

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Invocare una activity presente in un jar
« Risposta #11 il: 15 Settembre 2011, 10:59:21 CEST »
0
Non puoi mettere in un jar Activity (queste non vengono riconosciute come tali). Devi importare il jar cone Android Library (se questa lo permette).

Se non riesci puoi facilmente effettuare un semplice workaround: metti il jar nel build path e crea una classe vuota dentro il tuo progetto che estende com.google.zxing.client.android.CaptureActivity e definisci quella sul manifest ed il gioco è fatto.

EDIT: Se non ricordo male c'è una restrizione che i package delle Activity devono essere interni al package del manifest? Correggetemi se sbaglio!

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Invocare una activity presente in un jar
« Risposta #12 il: 15 Settembre 2011, 11:28:14 CEST »
0
Non puoi mettere in un jar Activity (queste non vengono riconosciute come tali). Devi importare il jar cone Android Library (se questa lo permette).

Se non riesci puoi facilmente effettuare un semplice workaround: metti il jar nel build path e crea una classe vuota dentro il tuo progetto che estende com.google.zxing.client.android.CaptureActivity e definisci quella sul manifest ed il gioco è fatto.

EDIT: Se non ricordo male c'è una restrizione che i package delle Activity devono essere interni al package del manifest? Correggetemi se sbaglio!
non sbagli, le activity (e anche i service ecc) se no nsbaglio vengono risolte a partire dall'app package.
Infatti le activities si dichiarano di solito con ".nomeActivity"
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline teogrem

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Windows 7
Re:Invocare una activity presente in un jar
« Risposta #13 il: 15 Settembre 2011, 12:12:56 CEST »
0
Grazie mille per il consiglio, adesso provo e vi faccio sapere.

Offline teogrem

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Windows 7
Re:Invocare una activity presente in un jar
« Risposta #14 il: 15 Settembre 2011, 12:45:21 CEST »
0
Mi dovete scusare, ma non riesco a fare come mi avete suggerito, mi restituisce il seguente errore:

"The type ScanActivity cannot subclass the final class CaptureActivity"

CaptureActivity è una classe final quindi non si può estendere  :-(