2016-04-01 45 views
0

我要寫一個可以隱藏其他應用程序的項目。我研究並找到一些有用的代碼,它很適合隱藏我的應用程序。你可以看到我的代碼如下:如何在Android中隱藏其他應用程序?

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

而問題是,我不知道如何隱藏其他應用程序。我試圖做大量的研究,但我仍然找不到任何解決方案。所以,你可以看看我下面的代碼(但它不工作隱藏另一個應用程序,但要隱瞞我自己的工作以及):

  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); 

我知道,組件名稱的第一個參數是的包名應用程序,第二個參數是我想要隱藏的應用程序的主要活動名稱。但每次我將這兩個參數都更改爲另一個值時,它總是強制關閉。但是,如果我將第一個參數更改爲我的應用的軟件包名稱,將第二個參數更改爲我的應用的主要活動名稱,則它與我上面顯示的第一個代碼非常相似。

我有一些日誌,我得到了收盤跌破時,我的應用力:

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) 

所以問題是,我怎麼能隱藏另一個應用程序?其他任何代碼/方法/建議/示例都很好。我會很感激你的幫助。謝謝。

回答

2

我不知道我怎樣可以隱藏另一個應用

幸運的是,你不能這樣做,從一個普通的SDK應用程序,出於顯而易見的安全原因。勒索作者將能力做你正在提議。

在設備所有者API IIRC中做了相當於「隱藏其他應用程序」的鉤子,但它們要求該應用程序是設備所有者應用程序,並且需要在手機或平板電腦上進行特殊工作在購買後首先啓動。

你可能能夠完成你想要的根植設備,你當然可以用你自己的自定義ROM做到這一點。您也可以創建一個主屏幕,通過在自己的啓動器中不顯示它們來「隱藏」應用程序。

+0

那麼,你知道任何線索在根源設備上這樣做嗎?如果你這樣做,請給我一些例子。無論如何感謝這個答案。它幫助我理解更多。 –

+0

@NaraNa:「那麼你知道有什麼線索可以根植設備嗎?」 - 不,對不起。我認爲這是可能的,因爲你可以在根植設備上做任何事情,但我不知道具體的技術。 – CommonsWare

+0

@CommonsWare你提到「你也可以創建一個」隱藏「應用程序的主屏幕,只需在自己的啓動器中不顯示它們」你能詳細說明某人可能如何實現這一點。我想玩這樣的東西。 –

相關問題