我的应用程序是一种袖珍指南,包含全年的一些数据.我假设用户将至少使用该程序一次访问Internet以激活许可证.或者至少这是我对Android许可系统如何工作的理解.我正在使用ServerManagedPolicy.
是否定期检查许可证?有什么办法可以控制吗?我不希望我的用户是在中间的地方,与已经和以前激活,1周,1个月,1年等之后突然应用程序启动限制了应用程序的可用性的应用程序本身,因为许可证couldn" 再次验证.我的应用程序将要和不稳定的网络访问偏僻的地方,使用的人谁就会生活在那里几个星期,也许几个月(不能想当然所有的时间).
我觉得我应该至少警告他们每隔X周就要问他们这样做.许可证制度是否是严厉的?
我知道我可以在applicationCheckerCallback的applicationError void上使用ERROR_CONTACTING_SERVER标志来处理错误."VT"响应是否始终相同(无法在测试帐户/我的帐户上测试)?我只是好奇你们如何在自己的现实应用程序中处理这种情况.我在这里错过了什么吗?出于某种原因,我感觉自己是.有没有"捕获"?
//编辑:
这是我正在尝试的代码:
// ServerManagedPolicy.java
private void setValidityTimestamp(String validityTimestamp) {
Long lValidityTimestamp;
try {
lValidityTimestamp = Long.parseLong(validityTimestamp);
} catch (NumberFormatException e) {
// No response or not parsable, expire in one minute.
Log.w(TAG, "License validity timestamp (VT) missing, caching for a minute");
lValidityTimestamp = System.currentTimeMillis() + MILLIS_PER_MINUTE;
validityTimestamp = Long.toString(lValidityTimestamp);
}
// added by me--->
private static long maxLicense = 1000 * 3600 * 24 * 30; // ~ roughly 30 days
private static …Run Code Online (Sandbox Code Playgroud) 我刚刚开发了一个Android应用程序,我想免费分发.
为了能够为我的工作赚取一些钱,我想在应用中添加一些广告或通知.如果用户决定捐出一些钱,他将使用某种解锁代码收到"捐赠"版本的解锁代码.
在Android中实现这个有什么"最佳实践"吗?
谢谢!
权限似乎没有任何区别......
在清单中,我只有一个<uses-permission>(permission.INTERNET),我有两个<permission>元素:
<permission android:name="myapp.permission.READ"
android:permissionGroup="myapp.permission-group.MYAPP_DATA"
android:label="@string/perm_read"
android:description="@string/perm_read_summary"
android:protectionLevel="signature" />
<permission android:name="myapp.permission.WRITE"
android:permissionGroup="myapp.permission-group.MYAPP_DATA"
android:label="@string/perm_write"
android:description="@string/perm_write_summary"
android:protectionLevel="signature" />
Run Code Online (Sandbox Code Playgroud)
然后是提供者:
<provider
android:name=".data.DataProvider"
android:multiprocess="true"
android:authorities="myapp.data.DataProvider"
android:readPermission="myapp.permission.READ"
android:writePermission="myapp.permission.WRITE" />
Run Code Online (Sandbox Code Playgroud)
现在,我可以正常访问ContentProvider,它运行得很好.
如果我没有强制执行,为什么它会起作用<uses-permission>?在宣布提供者的应用程序中是否也不需要它?
添加<uses-permission>我自己的权限没有区别.这些权限甚至没有在应用信息中列出.为什么?
ps:是的,我在这里读过关于SO和Google Groups的问题(也是Hackborn回答的问题).我跟着(你可以看到)到处都有什么描述,但是......你可以说它在起作用,但关键是我想要看到它什么时候没有.
我在通常的数据库文件夹下有这个数据库文件,里面有一堆表.
请注意,我不想在命令行下检索.我知道我可以使用".tables"命令.
我想使用代码检索其中所有表的列表,以便我可以在每个表上执行一些特定的算法.
另外,我在Android上没有发现任何关于此问题的问题,所以请原谅我,如果有的话.我想知道是否有任何我可以使用的功能DatabaseUtils,但我也没有找到任何功能.
我是Android的新手。
如何获得以百分比(1-100%)表示的GSM信号强度?
我有2个活动.一个叫Login,另一个叫ListDeals.Login有一个带有提交按钮的表单,当按下该按钮时,应该将我们的活动切换到ListDeals.这有效.
但是,在Logcat中,我没有收到消息说活动已经开始.此外,当进入时ListDeals,如果用户按下后退按钮,则应该杀死两个活动.我环顾四周,这就是我提出的:
public class Login extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_screen);
Button submit=(Button)findViewById(R.id.submit);
submit.setOnClickListener(onSubmit);
}
private View.OnClickListener onSubmit=new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent myIntent=new Intent(view.getContext(),ListDeals.class );
startActivityForResult(myIntent,0);
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.login_screen, menu);
return true;
}
@Override
public void onActivityResult(int requestCode,int resultCode, Intent data) {
if(resultCode==2) {
finish();
}
}
}
Run Code Online (Sandbox Code Playgroud)
public class ListDeals extends Activity { …Run Code Online (Sandbox Code Playgroud) 我正在玩角落,我对这种行为很感兴趣.XML布局:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_header_title"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:padding="10dip"
android:gravity="center_vertical"
android:background="@layout/my_outline"
android:text="Example"
android:textSize="14sp"
android:textStyle="bold"
/>
Run Code Online (Sandbox Code Playgroud)
这是my_outline.xml :( 注意角标记)
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:topLeftRadius="10dip"
android:bottomRightRadius="10dip"/>
<padding
android:left="50dip"
android:top="5dip"
android:bottom="5dip" />
<solid
android:color="#0fff" />
<stroke
android:width="1dip"
android:color="#f0f0f0" />
</shape>
Run Code Online (Sandbox Code Playgroud)
图片:

将形状更改为:
<corners
android:topLeftRadius="10dip"
android:bottomLeftRadius="10dip"/>
Run Code Online (Sandbox Code Playgroud)
而且你可以清楚地看到底角是倒置的(发生在所有人身上,我只是为了说明"周三").这是我的手机图片(Nexus S 2.3.2,但也发生在模拟器上):

你知道吗?我看着谷歌("android形状倒角"),什么也没得到.在这里,SO也没有"相关问题".
我收到了错误java.lang.OutOfMemoryError: bitmap size exceeds VM budget.
创建位图以便手动绘制折线图时会发生这种情况.
width = display.getWidth() - 10;
height = width * 4 / 5;
Bitmap emptyBmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
Bitmap charty = createMyGraphAndStuff(emptyBmap);
Run Code Online (Sandbox Code Playgroud)
看起来分配的总内存大约是700 Kb,这是一个不合理的数量.
我已经看到了从文件创建位图时调用的其他解决方案,但在这里我自己生成一个.如何最小化其内存占用?
这里有一些代码可以让您更好地了解它正在做什么:
public Bitmap DrawTheGraphAndStuff(Bitmap bitmap, String[] scores)
{
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);
drawTheGridLines(canvas);
plotTheDataPoints(canvas , scores , "the title" , 0 );
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}
Run Code Online (Sandbox Code Playgroud) 问题:开始IntentService生成一个RuntimeException.
我很无能为力.如果您需要更多信息,请询问.日志:
D/dalvikvm( 6839): newInstance failed: no <init>()
D/AndroidRuntime( 6839): Shutting down VM
W/dalvikvm( 6839): threadid=1: thread exiting with uncaught exception (group=0x40015560)
E/AndroidRuntime( 6839): FATAL EXCEPTION: main
E/AndroidRuntime( 6839): java.lang.RuntimeException: Unable to instantiate service org.xyz.android.service.MyService: java.lang.InstantiationException: org.xyz.android.service.MyService
E/AndroidRuntime( 6839): at android.app.ActivityThread.handleCreateService(ActivityThread.java:1929)
E/AndroidRuntime( 6839): at android.app.ActivityThread.access$2500(ActivityThread.java:117)
E/AndroidRuntime( 6839): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:985)
E/AndroidRuntime( 6839): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 6839): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime( 6839): at android.app.ActivityThread.main(ActivityThread.java:3683)
E/AndroidRuntime( 6839): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 6839): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( 6839): at …Run Code Online (Sandbox Code Playgroud) android android-contentprovider runtimeexception intentservice