2013-04-16 20 views
7

我在Play商店發佈了我的應用程序,但它不適用於平板電腦。我查看了Google Play商店的應用程序的功能,經過一些研究發現我的應用程序具有某些我認爲是有罪的電話功能的電話功能。這是我的清單文件。<uses-permission android:name =「android.permission.SEND_SMS」/>

<uses-sdk 
     android:minSdkVersion="7" 
     android:targetSdkVersion="17" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> 
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> 
    <uses-permission android:name="android.permission.SEND_SMS" /> 

    <!-- GCM requires a Google account. --> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

    <!-- Keeps the processor from sleeping when a message is received. --> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 

    <permission 
     android:name=".permission.C2D_MESSAGE" 
     android:protectionLevel="signature" /> 

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

    <!-- This app has permission to register and receive data message. --> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <!-- Keeps the device on vibrating mode when a message is received. --> 
    <uses-permission android:name="android.permission.VIBRATE" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Black.NoTitleBar" > 

     <receiver 
      android:name="com.google.android.gcm.GCMBroadcastReceiver" 
      android:permission="com.google.android.c2dm.permission.SEND" > 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
       <category android:name="" /> 
      </intent-filter> 
     </receiver> 

     <service android:name=".GCMIntentService" /> 

     <activity 
      android:name=".Splash" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity 
      android:name=".MainActivity" 
      android:screenOrientation="portrait"> 
     </activity> 

      <activity 
      android:name=".SelectedArticlePush" 
      android:screenOrientation="portrait"> 
     </activity> 

     <activity 
      android:name=".ActusScreen" 
      android:screenOrientation="portrait"> 
     </activity> 

      <activity 
      android:name=".MentionLegale" 
      android:screenOrientation="portrait"> 
     </activity> 

     <activity 
      android:name=".SelectedArticle" 
      android:screenOrientation="portrait" 
      android:windowSoftInputMode="stateAlwaysHidden|adjustPan">> 
     </activity> 

     <activity 
      android:name=".ReglementScreen" 
      android:screenOrientation="portrait"> 
     </activity> 

     <activity 
      android:name=".SelectedReglementation" 
      android:screenOrientation="portrait"> 
     </activity> 

     <activity 
      android:name=".FavoriteScreen" 
      android:screenOrientation="portrait"> 
     </activity> 

     <activity 
      android:name=".AlertScreen" 
      android:screenOrientation="portrait"> 
     </activity> 

     <activity 
      android:name=".ClubScreen" 
      android:screenOrientation="portrait"> 
     </activity> 

     <activity 
      android:name="ClubMi" 
      android:screenOrientation="portrait"> 
     </activity> 

     <activity 
      android:name=".DisplayWeb" 
      android:screenOrientation="portrait"> 
     </activity> 

     <activity 
      android:name=".Contact" 
      android:screenOrientation="portrait"> 
     </activity> 

     <activity 
      android:name=".tab.TabClubMi" 
      android:screenOrientation="portrait"> 
     </activity> 

     <activity 
      android:name=".SMS" 
      android:screenOrientation="portrait" 
      android:theme="@style/Theme.Transparent" > 
     </activity> 

    </application> 

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

我相信<uses-permission android:name="android.permission.SEND_SMS" />激活電話功能。不過,我需要此權限才能發送短信。任何人都可以告訴我,如果在平板電腦上運行,是否有另一種方法可以通過這種方式。

+0

查看該應用是否適用於支持SIM的平板電腦。 – midhunhk

回答

2

您忘記了將xlargeScreens添加到您的Manifest

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

編輯:<uses-permissions>標籤不執行任何硬件或功能的設備上,只是<uses-feature>標籤強制執行能力,當required設置爲true

+0

關於電話的東西 – yakusha

+0

@yakusha它不應該影響可見性,因爲我可以在沒有它的手機中使用NFC許可下載應用程序。這個答案似乎更合理。 – Aballano

+0

oki我會嘗試它並恢復回 – yakusha

15

一個用途,功能塊添加到您的清單:以上

<uses-feature 
    android:name="android.hardware.telephony" 
    android:required="false" > 
</uses-feature> 

告訴這個功能在您的應用程序所使用的設備。然而,android:required="false"確保這不是一個嚴格的要求,並且將安裝應用程序,而不管支持android.hardware.telephony功能的設備如何。

但是,這會產生一個新的問題。不要擔心。解決方案如下。 :-)

當不支持android.hardware.telephony功能的設備試圖以任何方式使用該功能時會發生什麼情況?在你的情況下,發送短信。一個簡單的解決方案是檢查設備是否有能力使用電話功能。

TelephonyManager tm = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE); 
if (tm.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE) { 
    // SHOW A DIALOG, A TOAST OR A NOTIFICATION TO TELL THE USER THAT THE FEATURE IS MISSING 
} else { 
    // RUN THE CODE TO SEND OUT THE SMS 
} 

我認爲這是一種解決方法,以防止它運行的設備是CDMA設備。

String strTM = ((TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE)).getLine1Number(); 
if (strTM == null) { 
    // SHOW A DIALOG, A TOAST OR A NOTIFICATION TO TELL THE USER THAT THE FEATURE IS MISSING 
} else { 
    // RUN THE CODE TO SEND OUT THE SMS 
} 

上面的代碼塊中的任一,需要READ_PHONE_STATE權限:

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

有檢查(使用PackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY))如果設備具有所述功能的另一種方式。我個人從來沒有得到過測試,但OP表明它的工作原理。 https://stackoverflow.com/a/6568243/450534

+0

我應該在哪裏放置 yakusha

+0

@yakusha :你可以在你的'uses-permission'聲明之後或之前放置這些代碼,但在'application'塊之外。 –

+0

在清單中。 –

相關問題