Tag: android

如何避免反向工程的APK文件?

我正在开发Android的付款处理应用程序 ,我想阻止黑客访问APK文件中的任何资源,资产或源代码。 如果有人将.apk扩展名更改为.zip,那么他们可以将其解压缩并轻松访问所有应用程序的资源和资产,并使用dex2jar和Java反编译器,还可以访问源代码。 这是一个非常简单的反向工程Android APK文件 – 欲了解更多信息,请参阅堆栈溢出问题反向工程从APK文件到项目 。 我已经使用了Android SDK提供的Proguard工具。 当我使用签名的密钥库和Proguard对生成的APK文件进行逆向工程时,我得到了混淆的代码。 但是,Android组件的名称保持不变,某些代码(如应用程序中使用的键值)保持不变。 根据Proguard文档,该工具不能混淆清单文件中提到的组件。 现在我的问题是: 我怎样才能完全避免 Android APK的逆向工程? 这可能吗? 我怎样才能保护所有的应用程序的资源,资产和源代码,使黑客无法以任何方式破解APK文件? 有没有办法使黑客更加困难,甚至不可能? 我还能做些什么来保护我的APK文件中的源代码?

Android ImageView缩放和翻译问题

我正在开发一个Android应用程序(API 19 4.4),我遇到了ImageViews的一些问题。 我有一个SurfaceView,我在其中dynamic添加我想对触摸事件作出反应的ImageViews。 到目前为止,我已经设法使ImageView平稳移动,但我有一个恼人的行为。 当我缩小图像到一定的限制(我会说原始大小的一半),我试图移动它,图像闪烁。 经过短暂的分析,似乎在屏幕上的手指点周围对称地切换其位置,并累积距离,最后看不见(发生的很快(<1s)),我认为我错过了与亲戚触摸事件的值ImageView / SurfaceView,但我是一个相当小白,我被困住了… 这是我的代码 public class MyImageView extends ImageView { private ScaleGestureDetector mScaleDetector ; private static final int MAX_SIZE = 1024; private static final String TAG = "MyImageView"; PointF DownPT = new PointF(); // Record Mouse Position When Pressed Down PointF StartPT = new PointF(); // Record Start Position […]

Android棉花糖请求权限?

我目前正在处理一个需要几个“危险”权限的应用程序。 所以我试着按照Android的棉花糖(API Level 23)的要求添加“请求权限”,但是找不到如何去做。 如何在我的应用程序中使用新的权限模式请求权限?

如何使用putExtra()和getExtra()作为string数据

有人可以告诉我如何使用getExtra()和putExtra()的意图。 其实我有一个stringvariables说str,它存储了一些string数据。 现在我想把这个数据从一个活动发送到另一个活动。 Intent i = new Intent(FirstScreen.this, SecondScreen.class); String keyIdentifer = null; i.putExtra(strName, keyIdentifer ); 然后在SecondScreen.java中 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.table); TextView userName = (TextView)findViewById(R.id.userName); Bundle bundle = getIntent().getExtras(); if(bundle.getString("strName")!= null) { //TODO here get the string stored in the string variable and do // setText() on userName } } 我知道这是非常基本的问题,但不幸的是我被困在这里。 请帮忙。 […]

如何刷新Android的ListView?

添加/删除dynamic数据后如何刷新Android ListView ?

一劳永逸,如何正确保存Fragments的实例状态到后退栈?

我在SO上发现了许多类似问题的实例,但不幸的是,没有答案满足我的要求。 我有不同的肖像和风景布局,我正在使用回栈,这阻止我使用setRetainState()和技巧使用configuration更改例程。 我在TextView中向用户显示了一些信息,这些信息并没有保存在默认处理程序中。 当单独使用活动编写我的应用程序时,以下运作良好: TextView vstup; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.whatever); vstup = (TextView)findViewById(R.id.whatever); /* (…) */ } @Override public void onSaveInstanceState(Bundle state) { super.onSaveInstanceState(state); state.putCharSequence(App.VSTUP, vstup.getText()); } @Override public void onRestoreInstanceState(Bundle state) { super.onRestoreInstanceState(state); vstup.setText(state.getCharSequence(App.VSTUP)); } 使用Fragment ,这只适用于非常特殊的情况。 具体来说,什么是可怕的更换碎片,把它放在后面的堆栈,然后旋转屏幕,而新的片段显示。 根据我的理解,旧的片段在被replace时不会接收到对onSaveInstanceState()的调用,而是保持以某种方式链接到Activity并且当它的View不再存在时调用此方法,所以查找我的任何TextView的结果变成一个NullPointerException 。 另外,我发现保留对TextViews的引用对于Fragment s来说并不是一个好主意,即使对于Activity来说也是如此。 在这种情况下, onSaveInstanceState()实际上保存了状态,但是如果在隐藏片段时旋转屏幕两次 ,问题就会重新出现,因为onCreateView()在新实例中不会被调用。 我想将onDestroyView()的状态保存到一些Bundletypes的类成员元素(它实际上是更多的数据,不只是一个TextView ),并保存在onSaveInstanceState()但还有其他的缺点。 主要是,如果片段当前显示,调用这两个函数的顺序是相反的,所以我需要考虑两种不同的情况。 必须有一个更清洁和正确的解决scheme!

如何以编程方式连接到Android中的特定Wi-Finetworking?

我想devise一个应用程序,显示可用的Wi-Finetworking列表,并连接到用户select的任何networking。 我已经实现了显示扫描结果的部分。 现在我想连接到用户从扫描结果列表中select的特定networking。 我如何做到这一点?

示例:使用消息传递的活动和服务之间的通信

我找不到任何有关如何在活动和服务之间发送消息的例子,我花了太多的时间来解决这个问题。 这是一个供他人参考的示例项目。 此示例允许您直接启动或停止服务,并单独绑定/取消绑定服务。 当服务正在运行时,它以10Hz递增一个数字。 如果活动绑定到Service ,它将显示当前值。 数据以Integerforms传输,并以stringforms传输,这样您就可以看到如何做到这两种不同的方式。 活动中还有button将消息发送到服务(更改增量值)。 截图: AndroidManifest.xml中: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.exampleservice" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".MyService"></service> </application> <uses-sdk android:minSdkVersion="8" /> </manifest> 水库\值\ strings.xml中: <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">ExampleService</string> <string name="service_started">Example Service started</string> <string name="service_label">Example Service […]

Android:以编程方式View.setID(int id) – 如何避免ID冲突?

我以编程方式在for循环中添加TextView,并将它们添加到ArrayList。 我如何使用TextView.setId(int id) ? 什么整数ID我想出来,所以它不与其他ID冲突?

如何在android中创build自定义对话框?

我想创build一个如下所示的自定义对话框 我已经尝试了以下的东西。 我创build了AlertDialog.Builder的一个子类,并使用了一个自定义的标题和自定义内容视图,并使用它,但结果并不像预期的那样。 另一个尝试是将DialogFragment子类化,并在onCreateDialog中自定义对话框,但结果不符合预期。 然后我尝试使用普通的Dialog类。 结果并不如预期。 在所有这三种情况下,问题是当我忽略标题视图时,对话框的大小不像预期的那样,当我使用标题视图时,结果是在内容视图周围有一个很粗的边框(看起来很糟糕)。 现在我在脑海里有两个问题 我怎样才能做到这一点? 正如我已经尝试了这么多的东西,直接的答案将更多的赞赏。 在android应用程序中显示错误或提示对话框的最佳方法是什么? 编辑 Android开发人员文档build议我们应该使用DialogFragments或对话框向用户显示错误/警报消息。 然而有一点他们说… 提示:如果您想要自定义对话框,则可以将对话框显示为对话框,而不是使用对话框API。 只需创build一个活动,并将其主题设置为manifest元素中的Theme.Holo.Dialog。 那是什么意思? 使用一个活动只是为了显示错误消息是不是太多?