2011-08-04 15 views
9

मैं here से नमूना कोड आज़मा रहा हूं। लेकिन मेरा ऐप दुर्घटनाग्रस्त हो रहा है।मैं अनौपचारिक एंड्रॉइड मार्केट एपीआई का उपयोग कैसे करूं?

मैंने लॉगिंग जोड़ा और पाया कि यह session.flush(); पर क्रैश हो रहा है इसलिए मैंने उस रेखा को हटा दिया और अब यह क्रैश नहीं होता है।

लेकिन यह onResult कॉलबैक तक नहीं पहुंचता है।

package com.mytest.app; 

import com.gc.android.market.api.MarketSession; 
import com.gc.android.market.api.MarketSession.Callback; 
import com.gc.android.market.api.model.Market.AppsRequest; 
import com.gc.android.market.api.model.Market.AppsResponse; 
import com.gc.android.market.api.model.Market.ResponseContext; 

import android.app.Activity; 
import android.os.Bundle; 
import android.provider.Settings.Secure; 
import android.util.Log; 

public class MarketAPITestActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Log.d("Market API", "Started"); 

     String email = "[email protected]"; 
     String pass = "mypass"; 
     String AndroidId = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID); 

     MarketSession session = new MarketSession(); 
     session.login(email,pass); 
     session.getContext().setAndroidId(AndroidId); 

     String query = "maps"; 
     AppsRequest appsRequest = AppsRequest.newBuilder() 
             .setQuery(query) 
             .setStartIndex(0).setEntriesCount(10) 
             .setWithExtendedInfo(true) 
             .build(); 

     session.append(appsRequest, new Callback<AppsResponse>() { 
       @Override 
       public void onResult(ResponseContext context, AppsResponse response) { 
         Log.d("Market API", "Got response"); 
       } 
     }); 

     session.flush();       
    } 
} 
+0

आप अपने कोड पोस्ट कर सकते हैं? और कोई अपवाद? कोड के साथ – Jack

+0

अद्यतन प्रश्न। मैंने कोशिश/पकड़ के साथ अपवाद को पकड़ने की कोशिश की लेकिन ग्रहण ने कहा कि यह नहीं पहुंचा जा सका इसलिए मुझे इसे हटाना पड़ा। मुझे यकीन नहीं है कि कोशिश/पकड़ कहाँ जोड़ें। – mrburns

+0

क्या आप अपवाद पोस्ट कर सकते हैं? यदि आप अपने लॉगकैट में देखते हैं, तो इसे session.flush() पर अपवाद दिखाना चाहिए; – Jack

उत्तर

1

मैं दृढ़ता से https://groups.google.com/forum/#!forum/android-market-api पर एक नज़र (केवल जगह मैं अभी भी पता है के बारे में Android बाजार एपीआई सक्रिय किया जा रहा है) लेने के लिए सुझाव देते हैं।

कृपया ध्यान दें कि प्रमाणीकरण विधि (लॉगिन/पीडब्ल्यूडी) अब बहिष्कृत (और सुरक्षित नहीं) से अधिक है, और अब वर्तमान बाजार प्रोटोकॉल द्वारा समर्थित नहीं हो सकता है।

इसके अलावा एक वैध एंड्रॉइड आईडी अब जितना आसान हो सके उतना आसान नहीं है, इसके लिए समूह भी देखें।

4

androidId के साथ कोई समस्या है। बजाय:

String AndroidId = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID); 

इस का उपयोग करें:

String AndroidId = "dead000beef"; 

यह काम करता है।

1

यह सुरक्षित नहीं है .ANDROID_ID, यह Gtalk सेवा डिवाइस आईडी है।

आप नीचे दिए गए कोड का उपयोग कर सकते हैं:

public String getDeviceId(Context context) { 
    String[] params = { GSERVICES_ID_KEY }; 
    Cursor c = context.getContentResolver() 
      .query(GSERVICES_URI, null, null, params, null); 

    if (!c.moveToFirst() || c.getColumnCount() < 2) 
     return null; 

    try { 
     return Long.toHexString(Long.parseLong(c.getString(1))).toUpperCase(); 
    } catch (NumberFormatException e) { 
     return null; 
    } 
} 

और अनुमति जोड़ें Gservice

पढ़ने के लिए
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
+1

GSERVICES_ID_KEY और GSERVICES_URI का मूल्य क्या है – Vamsi

संबंधित मुद्दे