我想要這樣的事情,當我的應用程序將安裝在Android手機。沒有任何人可以從手機上卸載它,或者任何人都會試圖卸載它,彈出一個節目或任何提醒。 有什麼辦法嗎?在android中禁用應用程序unistall?
回答
我目前認爲您可以完成此操作的唯一方法是使用兩個應用程序。
- 是主人..它作爲服務運行,檢查是否安裝了應用程序
並在缺失時安裝它。 - 是您希望用戶看到
好的應用..嗯,我可以想其他辦法。作爲Blessenm說,改變操作系統..但是,假設你的目標硬件的特定位。
您可能可以根系統,並可以讓您訪問管理的想法..不知道它是否會工作。
理論上,您可以將手機「root」,將您的應用程序添加到系統分區(用戶無法修改系統分區),然後再次「取消root」。不過,我不確定這是否適用於所有型號。有些設備不能「未紮根」。
嗯,你能解釋如何根電話。是指所有的android製造商允許它?如果不是那個知道製造商提供此功能? – 2012-04-20 07:46:05
爲每個設備製造商開通手機可能是一個非常具體的過程。我不認爲有一個教程涵蓋所有不同的作品。恐怕您必須爲Google提供特定說明。我知道索尼愛立信(Sony Mobile now-a-days)在他們的生根方式上非常自由(他們在他們自己的開發者論壇中有一個非常有幫助的社區)。 – dbm 2012-04-20 10:57:55
非常感謝Mr.dbm :)非常感謝您的時間。 – 2012-04-20 11:17:44
您需要啓用deviceAdmin才能禁用Force Stop
和Uninstall
功能。這由處理企業/應用策略管理的Device Admin API
處理。
該怎麼做? – 2015-07-17 07:33:41
您可以分享Device Admin API的示例代碼來使用此功能嗎? – 2016-12-08 12:57:37
明確禁用是不可能的。但是,您可以爲此使用解決方法。 創建自己的應用服務,堅持不懈地在後臺運行:
//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();
}
};
不要忘了與startService(new Intent(this, MasterService.class));
啓動和出口,並啓用了您的清單申報。
Android爲了卸載應用程序(在無根電話上)運行包管理器。 在您的Runnable
中,您需要檢測包管理器是否在前臺運行。如果是的話,使用視圖啓動這需要輸入焦點的活動:
//MasterService.java (inside runnable)
@Override
public void run(){
while(true) {
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
for (int i = 0; i < procInfos.size(); i++) {
//check if package installer runs in foreground
if (procInfos.get(i).processName.equals("com.android.packageinstaller") && procInfos.get(i).importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
//start activity
startActivity(new Intent(MasterService.this, OverlayActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY));
}
}
}
}
在您的活動,創建任何視圖,並覆蓋後退按鈕,以防止用戶從又回到了包卸載屏幕:
//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() {
}
};
主頁按鈕並不重要,因爲它會隱藏所有活動,並且如果用戶按任務按鈕選擇包管理器,則OverlayActivity
將再次打開。 確保主服務不能停止或強制關閉。有兩種方法來解決這個問題:在您的onDestroy
功能
- 發送自定義廣播消息,再次啓動服務。
- 通過檢查
com.android.settings
來禁用設置應用程序。
我希望你知道你做了什麼,因爲用戶應該知道什麼時候卸載應用程序。
- 1. 在Android PhoneGap應用程序中禁用雙擊應用程序
- 2. 在Android應用程序中啓用或禁用應用程序的權限
- 3. Unistall應用程序從SDCARD中刪除文件夾
- 4. 禁用android應用程序排行榜
- 5. 在我的應用程序中啓用和禁用android
- 6. 在Android應用程序中啓用並禁用SEARCH_LONG_PRESS
- 7. 在應用程序聲音中禁用
- 8. 在應用程序中禁用Siri
- 9. 在發佈Android應用程序中完全禁用LogCat輸出?
- 10. Android - 在我的應用程序中禁用接近傳感器
- 11. com.facebook.share.widget.ShareButton在Android應用程序中被禁用
- 12. 在android管理應用程序中禁用卸載按鈕
- 13. 在我的應用程序中禁用計數器android
- 14. 在我的Android應用程序中禁用多指觸摸
- 15. 如何禁用在我的應用程序中的android
- 16. Capifony禁用應用程序
- 17. 禁用應用程序Nap
- 18. 禁止刪除或禁用Android應用程序
- 19. 遠程禁用在Worklight 6.1.0.01中不適用於Android應用程序
- 20. 在我的Android應用程序中使用Maps應用程序
- 21. 在Android應用程序中調用應用程序的API
- 22. 無法在Android應用程序中找到com.google.api.client.htpp.javanet.NetHttpTransport在Android應用程序中
- 23. 如何從android應用程序中禁用屏幕截圖?
- 24. 試圖禁用android中的最近的應用程序按鈕
- 25. 如何禁用Android應用程序中的按鈕
- 26. 從安裝的Android應用程序中禁用apk文件
- 27. Android在應用程序關閉時禁用BroadcastReceiver
- 28. Android:禁用在平板電腦上安裝應用程序
- 29. 禁用從Android應用程序轉義android 4.0+
- 30. 如何在我的應用程序中使用NFC時禁用默認的Android NFC應用程序
你不想讓別人從手機上卸載你的應用程序?可怕的... – 2012-04-20 06:37:21
是他們設備管理員的任何方式。 意思是如果用戶在android中安裝應用程序,其他用戶無法從該設備刪除該應用程序? – 2012-04-20 06:41:38
等待這個人..有時手機不是由那些使用它的人擁有..如果我擁有一家公司,並希望我的員工使用我爲他們製作的應用程序,那麼如果他們沒有安裝,我會非常惱火它。認爲停車票的人,銷售人員,送貨人員。我擁有硬件,我說你使用它。 – baash05 2012-04-20 06:43:48