大多数人使用真实手机来测试Google帐户特定的Android功能吗?例如,我想开发/测试Ice Cream Sandwich日历api,在模拟器中我可以将Google Gmail帐户添加到操作系统,但日历似乎永远不会同步.
这是一篇相关的帖子:
如何使用新的Android 4.0 Ice Cream Sandwich API阅读和编辑Android日历活动?
我的问题是你如何测试它?我想升级我的nexus手机和galaxy 10.1平板电脑,但我也想确保升级是安全的.如果模拟器可以支持有限的同步等,那将是很好的.
谢谢.
Fragments API发布后,我开始使用兼容包将所有已弃用的对话框移植到DialogFraments中.一切都运行良好,直到我注意到我的对话框仅导致ICS崩溃:
E/AndroidRuntime( 883): FATAL EXCEPTION: main
E/AndroidRuntime( 883): java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
E/AndroidRuntime( 883): at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1254)
E/AndroidRuntime( 883): at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1265)
E/AndroidRuntime( 883): at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:541)
E/AndroidRuntime( 883): at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:525)
E/AndroidRuntime( 883): at android.support.v4.app.DialogFragment.show(DialogFragment.java:123)
E/AndroidRuntime( 883): at com.myapp.ui.dialogs.TwoButtonDialogFragment.showDialog(TwoButtonDialogFragment.java:84)
Run Code Online (Sandbox Code Playgroud)
我的对话框显示在AsyncTask.onPostExecute()上,以显示对用户的http响应.在深入研究问题之后,我得出的结论是,只有当Activity暂停或停止时才会发生此异常,并且在其他版本的Android上不会发生此异常.我已经尝试使用commitAllowingStateLoss(),但它没有帮助,因为在DialogFragment.show()上抛出了异常.这是我的DialogFragment代码:
private static void showDialog(FragmentActivity activity, String title, String msg,
String positiveButtonText, String negativeButtonText, int id, Bundle args) {
if (activity.isFinishing()) {
return;
}
FragmentManager fmgr = activity.getSupportFragmentManager();
FragmentTransaction ft = fmgr.beginTransaction();
Fragment prev = fmgr.findFragmentByTag(TAG);
if (prev != …Run Code Online (Sandbox Code Playgroud) android android-fragments android-4.0-ice-cream-sandwich android-dialogfragment
我想在imageView上的静态图像上显示webView.
我像这样为webView设置透明色
webview.setBackground(0);
Run Code Online (Sandbox Code Playgroud)
我将背景颜色设置为透明
<html>
<head>
</head>
<body style="background-color:transparent">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但Webview的背景显示为白色.
我展示了任何问题,并尝试以下页面的解决方案,但没有任何改变.
你有什么想法?请帮我.
通过ICS,我们现在可以使用日历API!:)
我的问题是,我们如何确定事件是否已更新.理想情况下,这可以通过BroadcastReceiver完成,但我不认为有一个可公开访问.有一些事件被广播,但我不认为它可以被非系统应用程序访问.
02-06 23:05:05.316: I/CalendarProvider2(9201): Sending notification intent: Intent { act=android.intent.action.PROVIDER_CHANGED dat=content://com.android.calendar }
02-06 23:05:05.320: W/ContentResolver(9201): Failed to get type for: content://com.android.calendar (Unknown URL content://com.android.calendar)
Run Code Online (Sandbox Code Playgroud)
这是我现在的工作.有没有更好的办法?如果用户看到一段时间内正在运行的服务,并且经常会将其杀死以节省电池寿命.
public class CalendarUpdatedService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
int returnValue = super.onStartCommand(intent, flags, startId);
getContentResolver().registerContentObserver(
CalendarContract.Events.CONTENT_URI, true, observer);
return returnValue;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
ContentObserver observer = new ContentObserver(new Handler()) {
@Override
public boolean deliverSelfNotifications() {
return true;
}
@Override …Run Code Online (Sandbox Code Playgroud) 我在这里开发一个非常简单的应用程序.这是我脑性麻痹的女儿.这只是一个很大的YES和NO按钮,所以她可以在要求时按下它们.
嗯......我正在使用SVOX经典TTS引擎.
一切顺利,直到我的平板电脑升级到ICS.现在,每次我运行应用程序时,都会打开市场,要求我安装TTS.我点击"回"然后,我的应用说话.这非常烦人.
以下是Google API所说的内容:
*成功检查将由CHECK_VOICE_DATA_PASS结果代码标记,表示在创建TextToSpeech对象后,此设备已准备好发言.如果没有,我们需要让用户知道安装设备成为多语言对话机所需的数据!下载和安装数据是通过触发ACTION_INSTALL_TTS_DATA意图完成的,该意图将用户带到Android Market,并让她/他启动下载.下载完成后,将自动安装数据.以下是onActivityResult()实现的示例:*
这是我的代码:
public class yesOunoActivity extends Activity implements OnInitListener{
ImageView yes;
ImageView no;
public TextToSpeech tts;
private int MY_DATA_CHECK_CODE = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
tts = new TextToSpeech(this, this);
setContentView(R.layout.yesorno);
yes = (ImageView) findViewById(R.id.yes);
no = (ImageView) findViewById(R.id.no);
yes.setClickable(true);
yes.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent arg1) {
if (arg1.getAction() == android.view.MotionEvent.ACTION_DOWN) {
tts.speak("yes!", TextToSpeech.QUEUE_ADD, null);
}
return true; …Run Code Online (Sandbox Code Playgroud) 在Ice Cream Sandwich用户可以看到最近使用的应用程序的列表,其中包含最后一个状态的屏幕截图UI.我正在开发一个应用程序,它显示不应以任何方式保存在内存中的机密信息.有没有办法禁用该功能?
我们最近测试了我们的应用程序对Android API级别14和15.我们开始开发目标最小SKD版本8并排除平板电脑(3.x).
使用2.x一切运行良好,但在4.x机器人上运行应用程序时,它会在我们获取用户位置时崩溃.
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to create service java.lang.IllegalArgumentException: provider=network
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2263)
at android.app.ActivityThread.access$1600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalArgumentException: provider=network
at android.os.Parcel.readException(Parcel.java:1331)
at android.os.Parcel.readException(Parcel.java:1281)
at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:646)
at android.location.LocationManager._requestLocationUpdates(LocationManager.java:582)
at android.location.LocationManager.requestLocationUpdates(LocationManager.java:446)
at package.name.LocationGetter.onCreate(LocationGetter.java:63)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2253)
...
Run Code Online (Sandbox Code Playgroud)
资源:
public void onCreate() {
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 300000, 500, locationListener);
super.onCreate();
}
Run Code Online (Sandbox Code Playgroud)
根据文件,IAE被抛出if provider or listener is null …
android geolocation illegalargumentexception android-4.0-ice-cream-sandwich
自更新到冰淇淋三明治后,我的POST请求不再起作用.在ICS之前,这很好用:
try {
final URL url = new URL("http://example.com/api/user");
final HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(false);
connection.setDoInput(true);
connection.setRequestProperty("Content-Length", "0");
if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
Log.w(RestUploader.class.getSimpleName(), ": response code: " + connection.getResponseMessage());
} else {
final BufferedReader reader = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
final String line = reader.readLine();
reader.close();
return Long.parseLong(line);
}
} catch (final MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (final ProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (final …Run Code Online (Sandbox Code Playgroud) 因此,我今天刚收到第四封电子邮件,内容是关于支持最新版本的平板电脑,其中一个10英寸的屏幕,分辨率为1920 x 1200像素.我的应用程序中的布局是针对每种设备类型的最佳选择而定制的,但是我不可能以1920 x 1200像素分辨率启动SDK模拟器,因此我无法进行布局这个屏幕尺寸.
我已经多次向Android开发者团队提及他们每周的Google+视频群聊问题(并且他们并不在乎),我在Stack Overflow和网络上看到了很多关于它的其他问题我也是还向Android Tools网站提出了有关此问题的两个错误.我仍然留下一个不能在这些高分辨率下工作的模拟器.
市场上有一些具有这些高分辨率的设备,我知道Android操作系统支持它,所以我被模拟器的极限所困扰.
我的电脑是一款功能强大的电脑,可以运行它,以前从未出现过低分辨率仿真器的问题.如果有人能帮助我,我会非常高兴,因为这让我疯狂.
android android-3.0-honeycomb android-4.0-ice-cream-sandwich
我在Android 3.2上开发并测试了一个应用程序,它与SQLite数据库交互并在屏幕上显示结果.我没有动画或任何花哨的东西.我所拥有的是很多ListViews向用户显示数据.
该应用程序的数据库非常大,有些表的行数超过300k.我们尝试在与数据库的每次交互中使用AsyncTask,但我们仍然需要一些点来优化性能.
问题是该公司将部分平板电脑更新为冰淇淋三明治,该应用程序比Honeycomb慢得多.我在两个设备中加载了相同的代码,使用相同的db,一个运行ICS,另一个运行Honeycomb.该应用程序在3.2设备中表现更好.我也试过使用,<uses-sdk android:minSdkVersion="14" />但它没有做得更好.
有什么办法可以优化4.0的性能吗?我也很想知道为什么会发生这种情况,以及是否有任何可能导致这种情况发生的事情(某些组件或类在4.0上运行不正常).
谢谢!
更新:我找到了我的应用程序主屏幕的解决方案.我正在呈现一个作为水平列表的片段,它是一个HorizontalScrollView加载了大量数据并创建了很多LinearLayout要在ScrollView 中呈现的片段.我找到了一个HorizontalListView的小部件,并用它来加载我的列表.只是这使应用程序更快.但是我没有找到为什么它在ICS上速度慢的答案.
我也试过分析应用程序,但这是一件非常困难的事情,有很多信息.我可能会在接下来的几周内继续这样做以加速应用程序.感谢您的所有答案和评论!
android-4.0-ice-cream-sandwich ×10
android ×9
api ×1
calendar ×1
geolocation ×1
http ×1
java ×1
performance ×1