1

私はphonegapアプリケーションを作成しています(phonegap 2.9 + jquery 1.8.3 + jquery mobile 1.3.1)。-4.3 Androidデバイスで完全に動作します。-4.0 Android デバイス。-2.2 Android仮想デバイス。

問題は、Android 2.2.2 デバイスにインストールすると問題が発生することです。一部の API 呼び出しは機能しますが、機能しないものもあります。

たとえば、次の呼び出しは機能します。

$.ajax({
    data:   {museum_id:'1'},
    url:    url+'index.php?r=api/ListAllCuriosities',
    type:   'get',
    success:  function (response) {
        var resultado = response['data'];
        var listadohtml = '';
        for (var i=0;i<resultado.length;i++){
            listadohtml += '<ul data-role="listview" data-theme="b" class="titulos"><li>'+resultado[i]['title']+'</li></ul>'
                        +'  <p>'+ resultado[i]['description']+'</p>';
        }

        $('#listCuriosities').html(listadohtml);
        $('#listCuriosities').trigger('create');
    },
    error: function() {
        //something went wrong, handle the error and display a message
        alert('Se ha producido un error en la llamada al servidor');
    }
});

しかし、この他のものはそうではありません

$.ajax({
    data:   {museum_id:'1'},
    url:    url+'index.php?r=api/ListMasterpieces',
    type:   'get',
    success:  function (response) {
        var visitedList = JSON.parse(window.localStorage.getItem("visited"));
        var resultado = response['data'];
        var listadohtml = '<div>';
        var author = '';


        for (var i=0;i<resultado.length;i++){
            var item = '';
            var isVisited = 'data-theme="a"';

            if(visitedList!=null && resultado[i]['id'] in visitedList && visitedList[resultado[i]['id']]==1){
                isVisited = 'data-theme="b" data-icon="check"';
            }

            if(resultado[i]['authorname']!=author){ // en caso de que el autor haya cambiado se insertará una nueva línea
                item += '<ul data-role="listview" data-theme="b"><li>'+resultado[i]['authorname']+'</li></ul>';
                author = resultado[i]['authorname'];
            }
            var id = resultado[i]['id'];
            item += '<p><a href="detalle.html?id='+id+'" id="enlace-'+id+'" data-role="button" data-ajax="false" data-prefetch="false" '+isVisited+'>'+resultado[i]["name"] + '</a></p>';

            listadohtml += item;
        }
        listadohtml += '</div>';


        $('#listaMasterpieces').html(listadohtml);
        $('#listaMasterpieces').trigger('create');
    },
    error: function() {
        //something went wrong, handle the error and display a message
        alert('Se ha producido un error en la llamada al servidor');
    }
});

私はそれができると思います: -パーミッションの問題のため(ご覧のとおり、デバイスにいくつかの情報を保存しています)-jqueryが正しく機能しないため(エラーajax-methodのアラートが表示されません)

マニフェストを添付します。

<supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:resizeable="true" android:anyDensity="true" />

 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

 <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.museum.prado.MainActivity"
        android:label="@string/app_name" 
        android:configChanges="orientation|screenSize" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
 </application>

前もって感謝します

4

1 に答える 1

0

@Raoul Georgeのおかげで、何が問題なのかを発見しました。

あなたが作るとき:

var visitedList = JSON.parse(window.localStorage.getItem("visited"));

Android 4 では何も起こりませんが、Android 2.2 で作業する場合は、window.localStorage.getItem("visited") に値があることを確認する必要があります。

于 2013-08-13T10:06:59.350 に答える