Autore Topic: Layout applicazione che può causare errore su alcuni dispositivi  (Letto 468 volte)

Offline roccia80

  • Utente junior
  • **
  • Post: 89
  • Respect: 0
    • Mostra profilo
0
Buonasera ragazzi,

riporto brevemente il codice della main activity, del manifest e del layout main.xml di una mia app gratuita.

MainActivity
Codice (Java): [Seleziona]
package it.miapp;

import java.io.File;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Miapp extends Activity {
    /** Called when the activity is first created. */
        private final static String APP_VERS_PREFERENCES = "AppVersPref";
        private final static String VERSION_NUMBER = "";
       
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        int versionNumberManifest = 0;
        PackageInfo pInfo = null;
        try{
                pInfo = getPackageManager().getPackageInfo("it.miapp",PackageManager.GET_META_DATA);
        } catch (NameNotFoundException e) {
            pInfo = null;
        }
        if(pInfo != null)
                versionNumberManifest =  pInfo.versionCode;
        SharedPreferences prefs = getSharedPreferences(APP_VERS_PREFERENCES,Context.MODE_PRIVATE);
                int versionNumberPref = prefs.getInt(VERSION_NUMBER, 0);
               
                if(versionNumberManifest>versionNumberPref) {
                        File testFileDb = new File("/data/data/it.miapp/databases/mydb.db");
                        if(testFileDb.exists())
                                testFileDb.delete();
               
                        SharedPreferences.Editor editor = prefs.edit();
                editor.putInt(VERSION_NUMBER, versionNumberManifest);
                editor.commit();
                }

        Button buttonIndice = (Button)findViewById(R.id.Button_hp_indice);
        buttonIndice.setOnClickListener(new OnClickListener() {
                        public void onClick(View v) {
                                Intent intent = new Intent(Miapp.this,Activity2.class);
                                startActivity(intent);  
                        }
        });
 
        Button buttonSearch = (Button)findViewById(R.id.Button_hp_search);
        buttonSearch.setOnClickListener(new OnClickListener() {
                        public void onClick(View v) {
                                Intent intent = new Intent(Miapp.this,Activity3.class);
                                startActivity(intent);  
                        }
        });  
     
        Button buttonPreferiti = (Button)findViewById(R.id.Button_hp_preferiti);
        buttonPreferiti.setOnClickListener(new OnClickListener() {
                        public void onClick(View v) {
                                Intent intent = new Intent(Miapp.this,Activity4.class);
                                startActivity(intent);  
                        }
        });
       
        Button buttonEmail = (Button)findViewById(R.id.button_hp_email);
        buttonEmail.setOnClickListener(new OnClickListener() {
                        public void onClick(View v) {
                                Intent intent = new Intent(Miapp.this,Activity5.class);
                                startActivity(intent);  
                        }
        });      
       
    }
}


Manifest
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="it.maggioli.android.miapp"
     android:versionCode="1"
     android:versionName="1.0">
    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
        <activity android:name=".Miapp"
                 android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
                <activity android:name="Activity2"></activity>
                <activity android:name="Activity3"></activity>
                <activity android:name="Activity4"></activity>
                <activity android:name="Activity5"></activity>
    </application>
    <uses-sdk android:minSdkVersion="4" />
        <supports-screens
                android:largeScreens="true"
                android:normalScreens="true"
                android:smallScreens="true"
                android:anyDensity="true" />
</manifest>

layout/main.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:background="@color/bgwhite" android:id="@+id/LinearLayoutHp">
        <ScrollView android:layout_height="fill_parent" android:layout_width="fill_parent" android:id="@+id/ScrollViewHp">
                <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:id="@+id/LinearLayoutIntHp">
                        <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@color/bgwhite" android:layout_gravity="center_horizontal" android:id="@+id/startButton" android:layout_marginTop="20dip" android:src="@drawable/logo"></ImageView>
                        <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" android:layout_gravity="center_vertical|center_horizontal" android:textColor="@color/blue" android:gravity="center_vertical|center_horizontal" android:id="@+id/outputTitle" android:layout_marginTop="10dip" android:textSize="20dip" android:typeface="sans" android:textStyle="bold|italic"/>
                        <Button android:layout_height="wrap_content" android:id="@+id/Button_hp_indice" android:text="@string/button_indice_hp" android:layout_gravity="center_horizontal" android:layout_width="fill_parent" android:layout_marginTop="10dip" android:textSize="15dip"></Button>
                        <Button android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="@string/button_search_hp" android:id="@+id/Button_hp_search" android:layout_width="fill_parent" android:autoText="true" android:layout_marginTop="10dip" android:textSize="15dip"></Button>
                        <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="@string/buttondoc_preferiti" android:id="@+id/Button_hp_preferiti" android:autoText="true" android:layout_marginTop="10dip" android:textSize="15dip"></Button>
                        <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/button_hp_email" android:text="@string/button_email_hp" android:layout_gravity="center_horizontal" android:layout_marginTop="10dip" android:textSize="15dip"></Button>
                </LinearLayout>
</ScrollView>
</LinearLayout>

Non lo sto a riportare per ogni cartella, ma ho preparato anche un file main.xml (con dovute modifiche) per cartelle layout-land, layout-small, layout-small-land, layout-large, layout-large-land.
L'applicazione è stata da me testata su una decina di avd (si differenziano per target, dimensioni e density) generati con emulatore di eclipse adt, su Acer BeTouche E400 (Android 2.1), su HTC Wildfire (Android 2.1) e su GalaxyTab (android 2.2): non ha mai creato problemi, sempre consultabile regolarmente.

Dopo circa 900 download in un mese e senza nessuna segnalazione (qualche valutazione di 4 o 5 stelline) è giunto commento su mancato funzionamento della app (viene forzata la chiusura in partenza, non si avvia proprio) da utente con HTC Desire (android 2.2.1).
In pannello di gestione applicazione su android.com, non mi è mai giunta segnalazione di tale problema (ma solo di 1 errore dovuto a mancata lettura di una tabella del db, operazione che non avviene in main activity ma nelle altre e che non mi spiego ma che sicuramente non dipende dal layout dell'applicazione)
Da cosa può dipendere questo problema? Come posso modificare il codice sopra riportato? Come posso eventualmente "emulare" dispositivo HTC desire su eclipse ADT?

Grazie
Ciao