在android中禁用应用程序unistall?
我想做这样一件事,当我的应用程序安装在安卓手机上时。没有人可以从手机上卸载它,或者当任何人试图卸载它时,会出现一个弹出窗口或任何警报。在android中禁用应用程序unistall?,android,Android,我想做这样一件事,当我的应用程序安装在安卓手机上时。没有人可以从手机上卸载它,或者当任何人试图卸载它时,会出现一个弹出窗口或任何警报。 有什么办法吗?目前我认为您可以实现这一目标的唯一方法是使用两个应用程序 他是主人。。它作为服务运行,检查应用程序是否已安装,如果缺少,则安装 是您希望用户看到的应用程序 好的。。嗯,我可以想其他的办法。。正如Blessenm所说,改变操作系统。。但这假设您的目标是特定的硬件 您可能可以在系统中设置根目录,这样您就可以访问管理员的想法。。不确定它是否有效 从理论上
有什么办法吗?目前我认为您可以实现这一目标的唯一方法是使用两个应用程序
您可能可以在系统中设置根目录,这样您就可以访问管理员的想法。。不确定它是否有效 从理论上讲,您可以“root”手机,将应用程序添加到系统分区(用户不能修改系统分区),然后再次“unroot”手机。不过,我不确定这是否适用于所有型号。某些设备无法“取消根目录”。您需要启用deviceAdmin以禁用
强制停止和卸载功能。这由处理企业/应用程序策略管理的设备管理API处理。不可能显式禁用。但是,您可以为此使用变通方法。
在应用程序中创建在后台持续运行的服务:
//MasterService.java
public class MasterService extends Service{
private ThreadPoolExecutor executor;
private Runnable runnable = new Runnable(){
@Override
public void run(){}
};
public MasterService(){
executor = new ThreadPoolExecutor(1, 1, 1, TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>());
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
executor.execute(runnable);
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onDestroy() {
super.onDestroy();
executor.shutdown();
}
};
在“活动”中,创建任何视图并覆盖“后退”按钮,以防止用户返回“软件包卸载程序”屏幕:
//OverlayActivity.java
public class OverlayActivity extends Activity{
private ImageView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
view = new ImageView(this);
setContentView(view);
}
@Override
public void onBackPressed() {
}
};
Home按钮并不重要,因为它将隐藏所有活动,如果用户按下task按钮选择package manager,则会再次打开OverlayActivity
。
确保主服务不能停止或强制关闭。有两种方法可以解决此问题:
在您的ondestory
功能中发送一条自定义广播消息,该消息将再次启动您的服务
通过检查com.android.settings
来禁用设置应用程序
我希望你知道你在做什么,因为用户应该知道何时卸载应用。你不想让人们从手机上卸载你的应用吗?可怕…是他们让设备管理员的任何方式。意思是说,如果一个用户在android上安装了应用程序,其他用户就不能从该设备上删除该应用程序了吗?等等,伙计们。。有时手机不属于使用它的人。。如果我拥有一家公司,希望我的员工使用我为他们开发的应用程序,那么如果他们取消安装,我会很生气。想想停车罚单人员、销售人员、送货人员。硬件是我的,我说你用它。@daveatflow。。我想做这种东西。你能帮帮我吗?@Niko好话。。。“不可能”是人类经常使用的一个词。只是因为我们不知道如何。。但这并不意味着它不可能完成。嗯,你能解释一下如何为手机设置根目录吗。是说所有的安卓制造商都允许吗?如果不超过哪个已知的制造商提供此功能?对每个设备制造商来说,为手机寻根可能是一个非常具体的过程。我不认为有一个教程涵盖所有不同的品牌。恐怕你得在谷歌上搜索具体说明。我知道索尼爱立信(Sony Mobile now-a-days)在生根方面非常自由(他们在自己的开发者论坛上有一个非常有用的社区)。你能分享设备管理API的示例代码来使用这个功能吗?
//OverlayActivity.java
public class OverlayActivity extends Activity{
private ImageView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
view = new ImageView(this);
setContentView(view);
}
@Override
public void onBackPressed() {
}
};