1

Я хочу классифицировать установленные приложения для Android (например, социальные, развлекательные, игры, новости, инструменты и т. Д.). Может ли кто-нибудь предложить, как я могу программно организовать все установленные приложения?Android категоризирует установленные приложения

ответ

2

Используйте WhereDat API:

Создать сырецJSON POST запрос, с массивом из пакетов, которые вы хотите классифицировать:

{ 
    "packages": [ 
    "com.pixmix.mobileapp", 
    "com.nextstagesearch" 
    ] 
} 

Отправить его:

http://api.wheredatapp.com/data

И вот ответ:

{ 
"apps": [ 
    { 
     "category": "Productivity", 
     "rating": 4.5, 
     "updated": 1436741473, 
     "created": 1431028391, 
     "icon_url": "https://lh3.googleusercontent.com/q5pFGfXKZejowwcmlJl7M1IXGHVM4Zq_IjPpYb7zgkUFXO3QnZ2LyeOUUhMPaKPkJ3gR=w300", 
     "title": "WhereDat Beta", 
     "package": "com.nextstagesearch", 
     "ratings_count": 4, 
     "short_description": "WhereDat lets you easily search your device for contacts, apps, and recently accessed webpages without leaving your home screen. With deep linking you can search the c..." 
    }, 
    { 
     "category": "Photography", 
     "rating": 4.0519609451293945, 
     "updated": 1435970764, 
     "created": 1430868349, 
     "icon_url": "https://lh3.ggpht.com/NgbwQzyo2mDR8su1Embio5jtHuPyScaMr0j4iub58YR5m19Ns0gVdeb9pYgNvMuFCcg=w300", 
     "title": "PixMix - Photo sharing", 
     "package": "com.pixmix.mobileapp", 
     "ratings_count": 2040, 
     "short_description": "Simple collage or photo sharing in just two clicks!★ See your photos in BEAUTIFUL albums★ Create beautiful album COLLAGE★ EASILY send albums to friends and family★ You..." 
    } 
] 
} 
+0

Привет, 503 ошибка, заявляя, что «это приложение временно находится за квотой обслуживания. Повторите попытку позже». –

+0

Привет @Murtuza, исправлена ​​ошибка! благодаря! –

2

попробуйте, он отлично работает для меня. эти коды возвращают категорию всего приложения на последнем устройстве. Помните, что вы должны поместить этот код в поток (AsyncTask ...) (HttpParams устарел, мы должны использовать HttpUrlConnection).

private void getAppCategories() throws IOException, JSONException { 

    BufferedReader bufferedReader = null; 
    HttpURLConnection urlConnection = null; 
    BufferedWriter bufferedWriter = null; 

    StringBuilder result = new StringBuilder(); 

    //Create JSON object to send to webservice 
    JSONObject jsonObjectSend = new JSONObject(); 
    JSONArray jsonArrayPakages = new JSONArray(); 
    PackageManager packageManager; 
    List<ResolveInfo> listApps; //this list store all app in device 

    try { 
     packageManager = getPackageManager(); 
     Intent filterApp = new Intent(Intent.ACTION_MAIN); 
     filterApp.addCategory(Intent.CATEGORY_LAUNCHER); 
     listApps = packageManager.queryIntentActivities(filterApp, 
       PackageManager.GET_META_DATA); 

     for (ResolveInfo app : listApps) { 
      jsonArrayPakages.put(app.activityInfo.packageName.trim()); 
     } 

     jsonObjectSend.put("packages", jsonArrayPakages); 

     Log.d("json", jsonObjectSend.toString()); 

     URL url = new URL("http://getdatafor.appspot.com/data?key=53972606b926d38191a5446fdff89e377873d767fabedf6d"); 
     urlConnection = (HttpURLConnection) url.openConnection(); 
     urlConnection.setConnectTimeout(10000); /* milliseconds */ 
     urlConnection.setReadTimeout(10000); /* milliseconds */ 
     urlConnection.setRequestMethod("POST"); 
     urlConnection.setRequestProperty("Content-Type", "application-json"); 
     urlConnection.setDoOutput(true); /* allow output to send data */ 
     urlConnection.connect(); 

     OutputStream outputStream = urlConnection.getOutputStream(); 
     bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream)); 
     bufferedWriter.write(jsonObjectSend.toString()); 
     bufferedWriter.flush(); 

     InputStream inputStream = urlConnection.getInputStream(); 
     bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 

     //Read data 
     String line; 
     while ((line = bufferedReader.readLine()) != null) { 
      result.append(line); 
     } 

     /*Parse JSON**********************************************************************************/ 
     JSONObject jsonObjectResult = new JSONObject(result.toString().trim()); 
     JSONArray jsonArrayApps = jsonObjectResult.getJSONArray("apps"); 

     for (int j = 0; j < jsonArrayApps.length(); j++) { 

      JSONObject jsonObjectApp = jsonArrayApps.getJSONObject(j); 

      String packageName = jsonObjectApp.getString("package").trim(); 
      String cate = jsonObjectApp.getString("category").trim(); 

      Log.d("result", (j + 1) + "---> : " + packageName + "---" + cate); 
     } 
     /***********************************************************************************/ 

    } finally { 
     if (bufferedReader != null) { 
      bufferedReader.close(); 
     } 
     if (bufferedWriter != null) { 
      bufferedWriter.close(); 
     } 
     if (urlConnection != null) { 
      urlConnection.disconnect(); 
     } 
    } 
} 

называют этот метод под AsyncTask:

new AsyncTask<Void, Void, Void>() { 

      @Override 
      protected Void doInBackground(Void... voids) { 

       try { 
        getAppCategories(); 
       } catch (IOException e) { 
        Log.d("tag", "Net work error: " + e.getMessage(), e); 
       } catch (JSONException e) { 
        Log.d("tag", "JSON is not valid: " + e.getMessage(), e); 
       } 
       return null; 
      } 
     }.execute(); 

и НЕ ЗАБУДЬТЕ разрешения ИНТЕРНЕТ.

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

+0

Нет, он не работает для меня, он всегда приходит (JSONException e), потому что я всегда получаю «Получить действительный ключ API: http://wheredatapp.com/dev/pricing» в ответ –

+0

@Bhanu Sharma они изменили правило, мы нужен ключ для использования этого API, доступ к http://wheredatapp.com/dev/pricing и нажмите GET API KEY, или вы можете использовать мой ключ в моем ответе. (Я отредактировал мой ответ). –

+0

Я проверил внимательно, и это сработало, на самом деле я использую его в своем приложении. Если вы считаете, что это полезно, пожалуйста, дайте мне голосование, у меня нет даже достаточной репутации, чтобы проголосовать за другие ответы :( –

0
  1. Android или playstore не предоставляют прямые интерфейсы API для доступа к Application (категория) информацию playstore программно. Таким образом, нет официальных API-интерфейсов.

  2. http://wheredatapp.com/developers/ Этот API также не дает 100% результатов. (эти люди делают вручную. Просто зайдите в playstore и узнайте название категории и пакета, затем эти данные хранятся на своем собственном сервере). Так что этот API также не предоставляет информацию о всех приложениях из магазина воспроизведения.

  3. Этот способ мы также будем делать. проблем нет. но это занимает некоторое время.

Смежные вопросы