我希望我的代码在模拟器上运行时的运行方式与在设备上运行时的运行方式略有不同.(例如,使用10.0.2.2而不是公共URL自动针对开发服务器运行.)检测Android应用程序何时在模拟器中运行的最佳方法是什么?
安装我的Android程序后,我检查设备区域设置:
String deviceLocale=Locale.getDefault().getLanguage();
Run Code Online (Sandbox Code Playgroud)
如果deviceLocale在我支持的语言(英语,法语,德语)内,我不会更改语言环境.
但是比如说如果我不支持设备的语言:例如西班牙语.
我将当前的语言环境设置为英语,因为大多数人可以部分理解英语.
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
pContext.getResources().updateConfiguration(config, null);
Run Code Online (Sandbox Code Playgroud)
但在那之后,在其他方法中,当我检查设备的语言环境时,如下所示:
String deviceLocale=Locale.getDefault().getLanguage();
Run Code Online (Sandbox Code Playgroud)
我得到的结果是"英语".但设备的区域设置是西班牙语.
getLanguage()是否提供当前应用的区域设置?
如何获取设备的区域设置?
编辑:在应用程序的首次运行中,它是一个保存设备区域设置的选项.但是如果用户在保存后更改设备区域设置,则无法知道设备的新区域设置.我只能知道我在app install中保存的语言环境.
我正在尝试使用一些参数进行Instrumentation测试.我注意到我可以通过System.getProperty()函数读取系统属性.所以我使用setprop命令设置系统属性.例如:adb shell setprop AP 123.在我的测试代码中,我尝试用以下内容读取此AP属性:
tmp = System.getProperty("AP");
Log.d("MyTest","AP Value = " + tmp);
Run Code Online (Sandbox Code Playgroud)
然后我使用logcat查看此调试消息,但我得到此属性的空值.关于什么可能出错的任何想法?请注意,我仍然可以使用adb shell getprop AP命令读取系统属性.
当Android 4.0(冰淇淋三明治)发布时,新的视图被引入到sdk中.这个视图是TextureView.在文档中,它表示TextureView可用于显示OpenGL场景的内容.
当您查找如何执行此操作时,您将找到一个示例链接.
https://groups.google.com/forum/?fromgroups=#!topic/android-developers/U5RXFGpAHPE
但是我想用TextureView替换GLSurfaceView,并保持我的其余代码相同,并且只是接受TextureView的优点.
我正在开发一个需要获取IMSI的应用程序.我用:
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imsi = mTelephonyMgr.getSubscriberId();
Run Code Online (Sandbox Code Playgroud)
它适用于大多数手机,但一些手机只返回6位而不是15位.这是错误的.
任何人都知道以编程方式检索IMSI的另一种方法吗?其他APIS?方法?
问候
我想获得每个Android设备唯一的设备ID.我目前正在开发平板电脑设备.想获得唯一的设备ID并存储相应的值...
所以,我想知道如果我使用TelephonyManager.getDeviceId()......,平板电脑设备是否会返回一个值?或者是否有任何其他值对每个设备唯一?
我正在尝试使用Android从SIM中检索MSISDN,我尝试了getLine1Number(),但这只返回存储在"我的手机信息"或"所有者信息"部分中的MSISDN,如果未存储这些信息,Android将返回空值.
你知道从中有什么工作吗?或者有没有办法从SIM号(getSimSerialNumber())派生MSISDN ?
一如既往地等待坚实的答案!:)
我目前正在实现一项功能,要求用户忽略应用程序的电池优化.这样做的原因是,应用程序的主要功能不幸受到省电模式的严重影响.
为了实现我的目标,我通过创建Intent和设置Actionto来提示用户ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS.
虽然在发射之前Intent,我都检查isPowerSaveMode()并isIgnoringBatteryOptimizations()确保在没有启用省电模式时不提示用户; 这是该功能的要求.我这样做的方式是:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean isPowerSaveMode = pm.isPowerSaveMode(); // always returns false for Huawei devices
Run Code Online (Sandbox Code Playgroud)
这适用于大多数设备,但对于华为设备,isPowerSaveMode()始终返回false.因此,由于前提条件失败,因此永远不会显示提示.
还有其他人可能遇到过这个问题吗?如果是这样,你做了什么来解决它?
需要注意的是,Xamarin.AndroidSDK中也存在同样的问题.
当Android设备连接到wifi AP时,它会使用以下名称标识自己:
android_cc1dec12345e6054
如何从Android应用程序中获取该字符串?不是为了改变它,只是为了读出.
编辑:
这是我的路由器的Web界面的屏幕截图,显示了所有连接设备的列表.请注意列表中的两个Android设备 - 如何从设备上运行的Java代码中读取该字符串?

我需要设置并获取名为"persist.sys.aabbcc"的系统属性.我能够使用adb shell命令读取/写入值,如下所示:
adb shell setprop persist.sys.aabbcc 123456
Run Code Online (Sandbox Code Playgroud)
和:
adb shell getprop persist.sys.aabbcc
123456
Run Code Online (Sandbox Code Playgroud)
我还可以使用Reflection在java Android中读取此属性:
@SuppressWarnings("rawtypes")
Class SystemProperties = Class.forName("android.os.SystemProperties");
//Parameters Types
@SuppressWarnings("rawtypes")
Class[] paramTypes = new Class[1];
paramTypes[0] = String.class;
Method get = SystemProperties.getMethod("get", paramTypes);
//Parameters
Object[] params = new Object[1];
params[0] = new String("persist.sys.aabbcc");
ret = (String) get.invoke(SystemProperties, params);
Run Code Online (Sandbox Code Playgroud)
或者使用Linux命令exec:
try
{
String line;
java.lang.Process p = Runtime.getRuntime().exec("getprop persist.sys.aabbcc");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null)
{
System.out.println(line);
Log.d("HelloDroid", line);
}
input.close();
} …Run Code Online (Sandbox Code Playgroud) 我看到有很多关于如何拨打号码的例子,我也看到我只能让它弹出拨号器去拨打紧急号码.但在所有这些例子中,他们硬编码"911"作为使用的数字.好吧,这在美国运作良好,但由于Android手机在其他国家销售,因此有可能我的应用程序将由不在美国的人购买,或者住在美国的人可能将他们的手机带到海外; 有没有办法然后我的应用程序可以意识到它不在美国,因此必须使用不同的号码来呼叫紧急服务,这个号码将是什么?
总而言之,我想知道我是否有办法可以实现这一点,所以当应用程序用拨打该国家的紧急号码拨打拨号器时,不必在编译时知道该号码?
我正在尝试使用
SystemProperties.get();
Run Code Online (Sandbox Code Playgroud)
但是无法导入android.os.SystemPropertiesgoogling包的位告诉我它的隐藏,有什么方法可以解决这个问题吗?
如何获取build.prop在/system/build.prop没有 root 访问权限的情况下找到的值?我如何编辑它们?
android ×13
adb ×1
android-wifi ×1
google-tv ×1
locale ×1
mobile ×1
msisdn ×1
opengl-es ×1
phone-call ×1
phone-number ×1
powermanager ×1
tablet-pc ×1