如何使我的应用程序对所有设备可见?
Posted
技术标签:
【中文标题】如何使我的应用程序对所有设备可见?【英文标题】:How to make my application visible for all devices? 【发布时间】:2014-01-23 04:09:42 【问题描述】:我有一个 android 应用程序,现在在 android 市场上。但是这个应用程序对某些设备不可见,特别是对于某些选项卡。直接从系统运行此应用程序(而不是从市场安装)运行良好。
这是清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxxxx"
android:installLocation="internalOnly"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="9" />
<uses-feature
android:name="android.hardware.telephony"
android:required="true" />
<uses-feature
android:name="android.hardware.location"
android:required="true" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<application
<activity----
</activity>
<service------
</service>
<receiver ------
</receiver>
</application>
</manifest>
如果我更改 required="false",会发生什么?代码会崩溃吗?
另外,我有一个中国平板电脑Crane_KA013
,它有“电话”应用程序,但在使用PackageManager.getSystemAvailableFeatures()
时没有列出“电话”功能。在这台平板电脑上运行我的应用程序时(不是从市场安装),工作正常很好,该设备在市场上看不到应用程序。
为什么会这样?我该如何解决这个问题?
提前致谢
【问题讨论】:
如果您删除了所需的功能,那么您也必须优雅地处理您的代码。即在使用此功能之前,您必须检查它是否可用。然后变化很好,它会起作用。如果你不优雅地处理它,它可能会在没有该功能的设备上崩溃 【参考方案1】:您似乎需要某些设备可能不具备的功能。例如:
<uses-feature
android:name="android.hardware.telephony"
android:required="true" />
在这里,您告诉系统需要电话,但是,某些平板电脑不支持此功能。
这是讨论此问题的 Google API 指南的链接:http://developer.android.com/guide/topics/manifest/uses-feature-element.html
【讨论】:
以上是关于如何使我的应用程序对所有设备可见?的主要内容,如果未能解决你的问题,请参考以下文章
阻止公共访问设置的哪些组合使我的 s3 存储桶对所有人可见?