2016-04-01 38 views
0

Başka uygulamaları gizleyebilecek bir proje yazacağım. Araştırma yaptım ve yararlı bir kod buldum ve uygulamanızı gizlemek için iyi çalışıyor. Aşağıdaki kodumu görebilirsiniz:Android'deki diğer uygulamalar nasıl gizlenir?

  PackageManager pm = getPackageManager(); 
      pm.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

Ve sorun şu ki, başka uygulamaları nasıl gizleyebilirim bilmiyorum. Çok fazla araştırma yapmaya çalıştım ama hala bir çözüm bulamıyorum. Yani aşağıda benim koduna bakabilirsiniz (ama başka uygulamalar gizlemek için çalışmıyor, ama iyi çalışıyor kendi gizlemek için):

  PackageManager p = getPackageManager(); 
      ComponentName com = new ComponentName("com.example.pro", "com.example.pro.classname"); 
      p.setComponentEnabledSetting(com, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

ben componentName için ilk parametre bir paket adı olduğunu biliyoruz Uygulama ve ikinci parametre, saklamak istediğim uygulamanın ana etkinlik adıdır. Fakat her zaman bu parametrelerin her ikisini de başka bir değere değiştirdiğim zaman her zaman kapanmaya zorlanır. Ancak, uygulamamın adını ve ikinci parametreyi uygulamamın ana etkinlik adına paketlemek için ilk parametreyi değiştirirsem, yukarıda gördüğüm ilk kod gibi çalışır.

Ve ben yakın aşağıda benim app kuvveti var bazı günlüğü vardır:

04-01 22:56:32.884 13339-13339/com.example.pro D/AndroidRuntime: Shutting down VM 04-01 22:56:32.884 13339-13339/com.example.pro E/AndroidRuntime: FATAL EXCEPTION:   main Process: com.example.pro, PID: 13339 
    java.lang.SecurityException: Permission Denial: attempt to change component state from pid=13339, uid=10613, package uid=10464 
    at android.os.Parcel.readException(Parcel.java:1540) 
    at android.os.Parcel.readException(Parcel.java:1493) 
    at android.content.pm.IPackageManager$Stub$Proxy.setComponentEnabledSetting(IPackageManager.java:4073) 
    at android.app.ApplicationPackageManager.setComponentEnabledSetting(ApplicationPackageManager.java:1839) 
    at com.example.pro.MainActivity$1.onClick(MainActivity.java:142) 
    at android.view.View.performClick(View.java:5191) 
    at android.view.View$PerformClick.run(View.java:20931) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:145) 
    at android.app.ActivityThread.main(ActivityThread.java:5944) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 

Yani sorun nasıl başka uygulamalar gizleyebilir, yani? Başka bir kod/yöntem/öneri/örnek iyidir. Ve yardımın için minnettarım. Teşekkürler. Bilmiyorum

cevap

2

nasıl başka uygulamalar

Neyse ki, bariz güvenlik nedenleriyle, sıradan bir SDK uygulamasından bunu yapamaz gizleyebilirsiniz. Ransomware yazarları, love'u önerdiğiniz şeyi yapma becerisine sahip olurlar.

cihaz sahibi API'leri IIRC içinde "Başka uygulamalar gizlemek" ne miktarda yapmak için bazı kancalar vardır, ancak bunlar uygulama bir cihaz sahibinin uygulaması olabilir gerektirir ve o zaman telefon veya tablet özel çalışma gerektirir ilk satın alındıktan sonra açık.

Köklü bir aygıtta ne istediğinizi gerçekleştirebilir ve kesinlikle kendi özel ROM'unuzla gerçekleştirebilirsiniz. Ayrıca, uygulamaları kendi gizleyicisine göstermeyerek "gizleyen" bir ana ekran da oluşturabilirsiniz.

+0

Köklü aygıtta bunu yapmak için herhangi bir ipucu biliyor musunuz? Eğer yaparsan, bana biraz örnek ver. Her neyse bu cevap için teşekkür ederim. Daha çok şey anlamama yardımcı oluyor. –

+0

@NaraNa: "Köklü aygıtta bunu yapmak için herhangi bir ipucu biliyor musunuz?" - Hayır, üzgünüm. Köklü bir cihazda bir şey yapabildiğiniz için bunun mümkün olduğunu varsayalım, ama spesifik teknikleri bilmiyorum. – CommonsWare

+0

@CommonsWare'dan da bahsetmiştiniz "Ayrıca," kendi başlatıcısında göstermeyen uygulamaları gizleyen bir ana ekran da oluşturabilirsiniz "diyebilirsiniz. Böyle bir şeyle oynamak istiyorum. –