Android 如何在并行空间中停止我的应用程序?
我创建了一个应用程序。我只希望每个手机有一个应用程序,但我可以使用并行空间多账户创建应用程序克隆。所以我的问题是如何停止克隆我的应用程序。android是否有任何唯一的标识符,即使用户重置手机也不能更改?我认为没有办法阻止“并行空间”克隆你的应用程序,这与android系统有关 我使用的一个简单解决方法是检查是否安装了并行空间应用程序(ps包名称:com.lbe.Parallel.intl) 正如你可以猜到的,这是不可靠的,因为许多不同的应用程序可以用于此目的。我没有为我的案件做进一步的说明,但我想到了一件事;如果您有文件写入权限,您可以创建一个全局文件,并在打开应用程序时将某些内容放在其中进行检查 知道这些应用程序如何工作的人可以提供更好的答案。如果他们在复制时更改了您的apk中的某些内容,则您可以检查这些更改或apk的哈希代码,但他们似乎在虚拟操作系统中运行您的应用程序,因此这可能不会导致解决方案Android 如何在并行空间中停止我的应用程序?,android,security,Android,Security,我创建了一个应用程序。我只希望每个手机有一个应用程序,但我可以使用并行空间多账户创建应用程序克隆。所以我的问题是如何停止克隆我的应用程序。android是否有任何唯一的标识符,即使用户重置手机也不能更改?我认为没有办法阻止“并行空间”克隆你的应用程序,这与android系统有关 我使用的一个简单解决方法是检查是否安装了并行空间应用程序(ps包名称:com.lbe.Parallel.intl) 正如你可以猜到的,这是不可靠的,因为许多不同的应用程序可以用于此目的。我没有为我的案件做进一步的说明,但
不幸的是,android上没有成功的唯一id。这是我讨厌android的地方。我检查不同的标识符,如deviceid、imei、mac地址等。。但平行空间为所有这些创造了新的价值 在我搜索了很多解决方案来停止应用程序克隆后,我想到了一个主意,那就是检查手机上应用程序数据的安装路径。
下面的代码进一步解释了这个想法:
int APP_PACKAGE_COUNT = 2; //----> my app package name is com.test.app the number is count of dots in package name
private void checkClonner() {
String path = this.getFilesDir().getAbsolutePath();
int count = getDotCount(path);
if (count > APP_PACKAGE_COUNT) {
throw new RuntimeException("This app does not work in a cloning environment");
}
}
private int getDotCount(String path) {
int count = 0;
for (int i = 0; i < path.length(); i++) {
if (count > APP_PACKAGE_COUNT) {
break;
}
if (path.charAt(i) == '.') {
count++;
}
}
return count;
}
int-APP\u-PACKAGE\u-COUNT=2;//--->我的应用程序包名为com.test.app该数字是包名中的点数
私人空支票Clonner(){
字符串路径=this.getFilesDir().getAbsolutePath();
int count=getDotCount(路径);
如果(计数>应用程序包计数){
抛出新的RuntimeException(“此应用程序在克隆环境中不工作”);
}
}
私有整型getDotCount(字符串路径){
整数计数=0;
对于(int i=0;i应用程序包计数){
打破
}
如果(路径字符(i)='。){
计数++;
}
}
返回计数;
}
int APP_PACKAGE_COUNT = 2; //----> my app package name is com.test.app the number is count of dots in package name
private void checkClonner() {
String path = this.getFilesDir().getAbsolutePath();
int count = getDotCount(path);
if (count > APP_PACKAGE_COUNT) {
throw new RuntimeException("This app does not work in a cloning environment");
}
}
private int getDotCount(String path) {
int count = 0;
for (int i = 0; i < path.length(); i++) {
if (count > APP_PACKAGE_COUNT) {
break;
}
if (path.charAt(i) == '.') {
count++;
}
}
return count;
}