我只是准备将我的第一个应用程序发布到Android市场,我想知道你是否有任何关于你在发布超越显而易见的应用程序时可能遇到的任何经验的提示记录.
在将应用程序发布到市场之前,有什么隐藏的警告和/或关于该做什么的想法?例如,我的一个伙伴建议我删除我的代码中的所有注释,以防万一有人到达源代码,从而使得想要"代码夹克"更难以破译代码.我认为这是一个明智的建议.
在将他们的应用发布到Android市场之前,要做的事情是什么?
在测试我的应用程序时,我使用模拟器和我自己的手机来查看一切是否正常.我的应用程序还将数据写入共享首选项和文本文件.
我可以通过DDMS日食从我的模拟器中提取数据,这样我就可以读取计算机上的数据文件,但是当我尝试通过DDMS手机打开这些文件夹时,没有任何反应.我点击数据文件夹,没有任何反应.
我的手机扎根了.有什么方法可以从我的手机中提取文件吗?我知道Android会将这些文件夹保密,但必须有办法.该模拟器就是这样太慢了.
本教程使用SimpleAdapter工作正常,但我需要在输入新数据时更新适配器中的数组.
你能否指导我如何使用SimpleAdapter以外的东西更新ListView?
我试过这个......
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int fullscreenheight = metrics.heightPixels;
int fullscreenwidth = metrics.widthPixels;
Run Code Online (Sandbox Code Playgroud)
和....
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Run Code Online (Sandbox Code Playgroud)
Gnex的显示屏为720×1280.宽度/高度的返回结果(取决于当然的方向)永远不会是1280.我认为这可能与冰淇淋三明治中的屏幕导航栏有关,所以我隐藏了:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
Run Code Online (Sandbox Code Playgroud)
...然后启动一个连续记录屏幕尺寸高度/宽度的线程.即使在ICS导航栏完全消失后......屏幕大小也永远不会报告1280值.我会得到这样的数字:
width = 720
height = 1184
Run Code Online (Sandbox Code Playgroud)
如何在ICS中获得真正的设备屏幕分辨率?
我需要这个值的原因是因为我的应用程序播放视频,我希望视频在设备处于横向时占据整个屏幕.现在我知道你在想什么,为什么不给视频视图增加高度/宽度的"match_parent"值?原因是因为我的视频有多个宽高比,我希望能够根据屏幕的整个宽度计算正确的视频大小.
我想从对话框选择器到这样的文本文件记录唤醒时间和休眠时间,但调用方法commitToFile2不会附加文本文件"savedData.txt".
我知道这段代码非常脏.我是Java的新手,所以任何其他建议都将不胜感激.
package com.buttinyourface;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.AdapterView.OnItemClickListener;
public class SettingsActivity extends Activity {
public int wakeHour;
public int wakeMinute;
public int sleepHour;
public int sleepMinute;
public String sleepHourText = "No Data";
public String sleepMinuteText = …Run Code Online (Sandbox Code Playgroud) 这是我目前在.htaccess文件中的代码:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
我知道关于重写的杰克...而且关于这个主题的所有其他帖子确实不符合我的标准,我不太了解该语言来尝试和破译它.
基本上我需要的是这个:
我上面的代码有效,但对于我需要https的1页,它将URL重写为http.那一页必须是https.
谢谢,克里斯
我正在构建一个应用程序,它会在用户醒着的时候以特定的时间间隔触发通知.
我在服务中运行了一个alarmManager.通过按钮单击主活动显式启动该服务,并使alarmManager在特定时间内执行通知.如何在一天中的某些时段停止通知?例如,当用户正在睡觉时,我不希望触发这些通知.
我目前以用户设置的间隔发送通知的代码低于(已删除导入....已经足够长了):
public class FartSmackinChunks extends Service {
public Notification scheduleNotification;
public AlarmManager alarmScheduleManager;
public PendingIntent alarmScheduleIntent;
private Boolean autoUpdateBoolean = true;
private int intervalsGoneByInt = 0;
private Notification notification;
public static final int NOTIFICATION_ID = 1;
@Override
public void onCreate() {
// TODO: Actions to perform when service is created.
int icon = R.drawable.icon;
String tickerText = "INTERVAL FIRED";
long when = System.currentTimeMillis();
scheduleNotification = new Notification(icon, tickerText, when);
alarmScheduleManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
String ALARM_ACTION;
ALARM_ACTION = ScheduleAlarmReceiver.ACTION_REFRESH_SCHEDULE_ALARM;
Intent …Run Code Online (Sandbox Code Playgroud) 我有一个Android项目,我最近通过与ProGuard的混淆运行后发布到市场.
该项目出口没有任何复杂性,但我怎么知道它被混淆了?有什么我可以做的来验证混淆是否成功?
有没有办法改变操作栏中下拉微调器的位置?
我找到了旋转器下拉的这种风格:
<style name="Sherlock.__Widget.Holo.Spinner" parent="Widget">
<item name="android:dropDownSelector">@drawable/abs__list_selector_holo_dark</item>
<item name="android:popupBackground">@drawable/abs__menu_dropdown_panel_holo_dark</item>
<item name="android:dropDownVerticalOffset">0dip</item>
<item name="android:dropDownHorizontalOffset">0dip</item>
<item name="android:dropDownWidth">wrap_content</item>
<item name="android:gravity">left|center_vertical</item>
<item name="android:spinnerMode">dropdown</item>
<item name="android:clickable">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
...但是如何让这个微调器一直到动作栏的右侧?现在它看起来像这样....

我希望旋转器能够齐平地靠在操作杆的右侧.
我似乎找不到任何关于通过XML或Java为adMob广告设置关键字的可靠文档.我已经尝试过在这个线程中看到的方法,但在两个方面都失败了.我对每个案件的失败都在下面.
当尝试从AdView类使用方法setKeywords(),setSearchQuery()或requestFreshAd()时,就像Eclipse不认识那些方法是AdView类的一部分.我可以不正确地实例化这个类吗?我的java代码如下:
import com.google.ads.AdRequest;
import com.google.ads.AdView;
AdView adView = (AdView)this.findViewById(R.id.adView);
adView.loadAd(new AdRequest());
Run Code Online (Sandbox Code Playgroud)
如果我尝试调用前面提到的方法(例如adView.setKeywords()),Eclipse就无法识别这些方法.我究竟做错了什么?
当我尝试通过XML设置关键字时,代码似乎运行正常,但我没有得到任何有效的添加请求.日志返回"无广告显示"消息.在这种情况下,我不知道我是不是从我的关键字得到结果,或者我没有正确设置关键字字符串.
以下描述了我如何通过XML设置关键字:
...在attrs.xml中:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="com.google.ads.AdView">
<attr name="adSize">
<enum name="BANNER" value="1"/>
<enum name="IAB_MRECT" value="2"/>
<enum name="IAB_BANNER" value="3"/>
<enum name="IAB_LEADERBOARD" value="4"/>
</attr>
<attr name="adUnitId" format="string"/>
<attr name="test" format="boolean"/>
<attr name="keywords" format="string"/>
</declare-styleable>
</resources>
Run Code Online (Sandbox Code Playgroud)
在layout.xml ....
<com.google.ads.AdView android:id="@+id/adView"
android:layout_width="fill_parent"
android:layout_gravity="bottom"
android:layout_height="wrap_content"
ads:adUnitId="blahblahblhal"
ads:adSize="BANNER"
ads:test="true"
ads:keywords="farts cheese stink pooper"/>
Run Code Online (Sandbox Code Playgroud)
显然,这些不是我正在使用的关键字,但我设置关键字的语法与我一直使用的相同.
如果没有要展示的广告,是因为我使用了太多的关键字,不正确的语法,以及如果我想使用短语而不是关键字该怎么办?我该怎么做呢?
如果AdMob网站上有关于此的文档,我表示歉意.但如果是这样的话,他们很难找到它.
谢谢
我有一个包含我所有代码的Android应用程序项目.我已将这个"应用程序"设为android.developer.com中定义的库项目..
因此,我制作了两个利用这个图书馆项目的新Android项目.每个新项目的新包名称为:
com.myapps.freeapp
com.myapps.paidapp
Run Code Online (Sandbox Code Playgroud)
正如您可能看到的,我正在尝试发布应用程序的免费和付费版本.
告诉图书馆项目安装的应用程序是免费版还是付费版的最佳方法是什么?
我已经有一个谷歌开发者帐户,但我想为我即将发布的应用程序创建一个全新的谷歌开发者帐户.
我可以在两个市场账户中使用相同的包名吗?例如,如果我有谷歌开发者帐号1,使用共享包名称的应用程序(例如com.myawesomeapps.app1,com.myawesomeapps.app2)....我可以创建一个全新的goodle开发者帐户并使用相同的包名称(即com.myawesomeapps.ap3)?
我只是问,因为我想为这个新应用程序设置一个不同的谷歌开发者帐户,但保留我的包裹名称,如果不可能,我不想支付出版商费用.
提前致谢.
我已经为我的应用程序发布了5个更新,没有任何问题.现在,在尝试安装更新以进行测试时,安装失败.通过常规Android软件包安装程序,我收到错误"应用程序未安装".
当尝试通过adb安装应用程序时,我收到错误:[INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
我知道这个证书与我之前用来签署应用程序的证书是一样的.
我还在Manifest文件中相应地增加了versionName和versionCode.
自从我上次更新已经改变的唯一的事情就是我的硬盘crapped出在我身上,这导致重新安装Eclipse,ADT,Android SDK,以及Java的.崩溃后我基本上不得不再次设置整个开发环境.
包括所有项目文件在内的所有内容都得到了备份.我可以很好地构建我的应用程序.
如果我先卸载以前的版本,则安装有效,但这是我当前发布的应用程序的更新.我不能要求用户卸载他们当前用于更新的任何版本.听起来很傻.
任何想法都会有所帮助.
android ×12
google-play ×2
.htaccess ×1
admob ×1
alarmmanager ×1
apache ×1
append ×1
certificate ×1
eclipse ×1
file ×1
keyword ×1
listview ×1
obfuscation ×1
package ×1
proguard ×1
publishing ×1
rewrite ×1
text ×1