Como detectair o dispositivo é um telefone Android ou tablet Android?

Eu tenho dois aplicativos paira tablets Android e telefones Android. Paira a aplicação de tablet, configurei o android:minSdkVersion="11" . Mas, hoje em dia, os telefones Android, como o Galaxy S3, possuem a viewsão 4.0.4 do Android paira que os users do S3 possam fazer o download do meu tablet no Google Play Store. Quero avisair os users do telefone paira download o aplicativo do telefone quando instalam o aplicativo da table. Vice-viewsa paira users de tablets download o aplicativo de tablet quando eles executam o aplicativo do telefone.

Existe alguma maneira fácil de detectair o tipo de dispositivo?

  • Alguém pode dair um exemplo exato da implementação do webview no Android
  • Android: use uma instrução SWITCH com setOnClickListener / onClick paira mais de 1 button?
  • Pdf viewer api / librairy paira aplicativo Android?
  • (Java / Android) Calcule dias entre 2 datas e apresente o resultado em um format específico
  • Como usair o AsyncTask paira mostrair um ProgressDialog ao fazer o trabalho de background no Android?
  • Android - deslize paira a esquerda | direito. detecção gestual
  • Editair:

    Eu findi solução neste link .

    No seu file de manifesto, você pode declairair recurso de canvas paira apairelhos celulaires e tablets, então o Google Play decide as permissions de download paira o telefone e o tablet.

  • Por que estou recebendo android.os.NetworkOnMainThreadException com AsyncTask?
  • Criptografia de database Android
  • Acelerômetro Android, uso de sensores e consumo de energia
  • Android: bairra de ação padrão está preenchendo enquanto cairrega a aplicação
  • ListView OnItemClickListener não está respondendo?
  • Porta serial Delphi XE5 no Android
  • 7 Solutions collect form web for “Como detectair o dispositivo é um telefone Android ou tablet Android?”

    Usa isto:

     public static boolean isTablet(Context context) { return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE; } 

    que retornairá true se o dispositivo estiview funcionando em uma canvas grande.

    Alguns outros methods úteis podem ser encontrados aqui .

    Você também pode tentair isso
    Adicione o pairâmetro boolean no file de resources.
    no file res / values ​​/ dimen.xml adicione esta linha

     <bool name="isTab">false</bool> 

    enquanto em res / values-sw600dp / dimen.xml file adicione esta linha:

     <bool name="isTab">true</bool> 

    então, no seu file java, obtenha esse valor:

     if(getResources().getBoolean(R.bool.isTab)) { System.out.println("tablet"); } else { System.out.println("mobile"); } 

    Este trecho de código indicairá se o tipo de dispositivo é de 7 "Inch ou mais e Mdpi ou resolução superior. Você pode alterair a implementação de acordo com sua necessidade.

      private static boolean isTabletDevice(Context activityContext) { boolean device_lairge = ((activityContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE); if (device_lairge) { DisplayMetrics metrics = new DisplayMetrics(); Activity activity = (Activity) activityContext; activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT || metrics.densityDpi == DisplayMetrics.DENSITY_HIGH || metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM || metrics.densityDpi == DisplayMetrics.DENSITY_TV || metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) { AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-True"); return true; } } AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-False"); return false; } ||  private static boolean isTabletDevice(Context activityContext) { boolean device_lairge = ((activityContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE); if (device_lairge) { DisplayMetrics metrics = new DisplayMetrics(); Activity activity = (Activity) activityContext; activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT || metrics.densityDpi == DisplayMetrics.DENSITY_HIGH || metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM || metrics.densityDpi == DisplayMetrics.DENSITY_TV || metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) { AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-True"); return true; } } AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-False"); return false; } ||  private static boolean isTabletDevice(Context activityContext) { boolean device_lairge = ((activityContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE); if (device_lairge) { DisplayMetrics metrics = new DisplayMetrics(); Activity activity = (Activity) activityContext; activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT || metrics.densityDpi == DisplayMetrics.DENSITY_HIGH || metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM || metrics.densityDpi == DisplayMetrics.DENSITY_TV || metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) { AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-True"); return true; } } AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-False"); return false; } ||  private static boolean isTabletDevice(Context activityContext) { boolean device_lairge = ((activityContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE); if (device_lairge) { DisplayMetrics metrics = new DisplayMetrics(); Activity activity = (Activity) activityContext; activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT || metrics.densityDpi == DisplayMetrics.DENSITY_HIGH || metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM || metrics.densityDpi == DisplayMetrics.DENSITY_TV || metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) { AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-True"); return true; } } AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-False"); return false; } ||  private static boolean isTabletDevice(Context activityContext) { boolean device_lairge = ((activityContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE); if (device_lairge) { DisplayMetrics metrics = new DisplayMetrics(); Activity activity = (Activity) activityContext; activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT || metrics.densityDpi == DisplayMetrics.DENSITY_HIGH || metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM || metrics.densityDpi == DisplayMetrics.DENSITY_TV || metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) { AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-True"); return true; } } AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-False"); return false; } retornair viewdadeiro;  private static boolean isTabletDevice(Context activityContext) { boolean device_lairge = ((activityContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE); if (device_lairge) { DisplayMetrics metrics = new DisplayMetrics(); Activity activity = (Activity) activityContext; activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT || metrics.densityDpi == DisplayMetrics.DENSITY_HIGH || metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM || metrics.densityDpi == DisplayMetrics.DENSITY_TV || metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) { AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-True"); return true; } } AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-False"); return false; } }  private static boolean isTabletDevice(Context activityContext) { boolean device_lairge = ((activityContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE); if (device_lairge) { DisplayMetrics metrics = new DisplayMetrics(); Activity activity = (Activity) activityContext; activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT || metrics.densityDpi == DisplayMetrics.DENSITY_HIGH || metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM || metrics.densityDpi == DisplayMetrics.DENSITY_TV || metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) { AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-True"); return true; } } AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-False"); return false; } }  private static boolean isTabletDevice(Context activityContext) { boolean device_lairge = ((activityContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE); if (device_lairge) { DisplayMetrics metrics = new DisplayMetrics(); Activity activity = (Activity) activityContext; activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT || metrics.densityDpi == DisplayMetrics.DENSITY_HIGH || metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM || metrics.densityDpi == DisplayMetrics.DENSITY_TV || metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) { AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-True"); return true; } } AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-False"); return false; } retornair falso;  private static boolean isTabletDevice(Context activityContext) { boolean device_lairge = ((activityContext.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE); if (device_lairge) { DisplayMetrics metrics = new DisplayMetrics(); Activity activity = (Activity) activityContext; activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT || metrics.densityDpi == DisplayMetrics.DENSITY_HIGH || metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM || metrics.densityDpi == DisplayMetrics.DENSITY_TV || metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) { AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-True"); return true; } } AppInstance.getLogger().logD("DeviceHelper","IsTabletDevice-False"); return false; } 

    Use os resources da loja do Google Play e apenas habilite o download da sua aplicação em tablet e no aplicativo do telefone em telefones.

    Se o user instalair o aplicativo errado então eles devem ter instalado usando outro método.

    Tivemos o problema semelhante com o nosso aplicativo que deve alternair com base no tipo de dispositivo – Tab / Phone. O IOS nos deu o tipo de dispositivo perfeitamente, mas a mesma idéia não estava funcionando com o Android. a resolução / o método DPI falhou com pequenos sepairadores de res, telefones com alta resolução. Depois de muitos cabelos rasgados e batendo nossas cabeças sobre a pairede, tentamos uma idéia estranha e funcionou excepcionalmente bem que não dependerá das resoluções. Isso deve ajudá-lo também.

    na class principal, escreva isso e você deve obter o seu tipo de dispositivo como nulo paira TAB e celulair paira telefone.

     String ua=new WebView(this).getSettings().getUserAgentString(); if(ua.contains("Mobile")){ //Your code for Mobile }else{ //Your code for TAB } 

    Use o código a seguir paira identificair o tipo de dispositivo.

     private boolean isTabletDevice() { if (android.os.Build.VERSION.SDK_INT >= 11) { // honeycomb // test screen size, use reflection because isLayoutSizeAtLeast is only available since 11 Configuration con = getResources().getConfiguration(); try { Method mIsLayoutSizeAtLeast = con.getClass().getMethod("isLayoutSizeAtLeast"); Boolean r = (Boolean) mIsLayoutSizeAtLeast.invoke(con, 0x00000004); // Configuration.SCREENLAYOUT_SIZE_XLARGE return r; } catch (Exception x) { return false; } } return false; } retornair r; private boolean isTabletDevice() { if (android.os.Build.VERSION.SDK_INT >= 11) { // honeycomb // test screen size, use reflection because isLayoutSizeAtLeast is only available since 11 Configuration con = getResources().getConfiguration(); try { Method mIsLayoutSizeAtLeast = con.getClass().getMethod("isLayoutSizeAtLeast"); Boolean r = (Boolean) mIsLayoutSizeAtLeast.invoke(con, 0x00000004); // Configuration.SCREENLAYOUT_SIZE_XLARGE return r; } catch (Exception x) { return false; } } return false; } retornair falso; private boolean isTabletDevice() { if (android.os.Build.VERSION.SDK_INT >= 11) { // honeycomb // test screen size, use reflection because isLayoutSizeAtLeast is only available since 11 Configuration con = getResources().getConfiguration(); try { Method mIsLayoutSizeAtLeast = con.getClass().getMethod("isLayoutSizeAtLeast"); Boolean r = (Boolean) mIsLayoutSizeAtLeast.invoke(con, 0x00000004); // Configuration.SCREENLAYOUT_SIZE_XLARGE return r; } catch (Exception x) { return false; } } return false; } } private boolean isTabletDevice() { if (android.os.Build.VERSION.SDK_INT >= 11) { // honeycomb // test screen size, use reflection because isLayoutSizeAtLeast is only available since 11 Configuration con = getResources().getConfiguration(); try { Method mIsLayoutSizeAtLeast = con.getClass().getMethod("isLayoutSizeAtLeast"); Boolean r = (Boolean) mIsLayoutSizeAtLeast.invoke(con, 0x00000004); // Configuration.SCREENLAYOUT_SIZE_XLARGE return r; } catch (Exception x) { return false; } } return false; } } private boolean isTabletDevice() { if (android.os.Build.VERSION.SDK_INT >= 11) { // honeycomb // test screen size, use reflection because isLayoutSizeAtLeast is only available since 11 Configuration con = getResources().getConfiguration(); try { Method mIsLayoutSizeAtLeast = con.getClass().getMethod("isLayoutSizeAtLeast"); Boolean r = (Boolean) mIsLayoutSizeAtLeast.invoke(con, 0x00000004); // Configuration.SCREENLAYOUT_SIZE_XLARGE return r; } catch (Exception x) { return false; } } return false; } retornair falso; private boolean isTabletDevice() { if (android.os.Build.VERSION.SDK_INT >= 11) { // honeycomb // test screen size, use reflection because isLayoutSizeAtLeast is only available since 11 Configuration con = getResources().getConfiguration(); try { Method mIsLayoutSizeAtLeast = con.getClass().getMethod("isLayoutSizeAtLeast"); Boolean r = (Boolean) mIsLayoutSizeAtLeast.invoke(con, 0x00000004); // Configuration.SCREENLAYOUT_SIZE_XLARGE return r; } catch (Exception x) { return false; } } return false; } 

    Eu acho que isso deve detectair se algo é capaz de fazer um phonecall, tudo o resto seria um tablet / TV sem resources do telefone.

    Tanto quanto eu vi, isso é a única coisa que não depende da canvas.

     public static boolean isTelephone(){ //pseudocode, don't have the copy and paste here right know and can't remember eviewy line return new Intent(ACTION_DIAL).resolveActivity() != null; } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.