2014-09-30 62 views
3

我需要隱藏應用程序圖標。
和運行的撥號
示例程序:* 12345#

我不能運行已隱藏的程序。
隱藏應用程序圖標並運行它

隱藏應用程序:

PackageManager p = getPackageManager(); 
      ComponentName componentName = new ComponentName(this, com.example.broadcastreciver.MainActivity.class); // activity which is first time open in manifiest file which is declare as <category android:name="android.intent.category.LAUNCHER" /> 
      p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 


運行MainActivity:

Intent appIntent = new Intent(context, Blank.class); 
      appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(appIntent); 



這是AndroidManifest.xml中

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver android:name=".IncomingSms" > 
      <intent-filter> 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
       <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
      </intent-filter> 
     </receiver> 

     <activity 
      android:name=".Blank" 
      android:label="@string/title_activity_blank" > 
     </activity> 
    </application> 
+0

請顯示您的AndroidManifest.xml – Karakuri 2014-09-30 21:26:51

+0

請再次檢查。 – Mahdi 2014-10-01 05:50:33

回答

1

終於讓我找到一種替代方法
,問題就解決了
我創建了一個意向過濾器

AndroidManifest.xml中

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name"> 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
<!-- Here is Launcher --> 
      </intent-filter> 
     </activity> 
     <receiver android:name=".IncomingSms" > 
      <intent-filter> 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
       <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
      </intent-filter> 
     </receiver> 

     <activity 

      android:name=".Blank" 
      android:label="@string/title_activity_blank" > 
<intent-filter> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
     </activity> 
    </application> 



隱藏應用程序圖標

ComponentName componentToDisable = 
        new ComponentName("com.example.broadcastreciver", 
        "com.example.broadcastreciver.MainActivity"); 
       getPackageManager().setComponentEnabledSetting(
        componentToDisable, 
        PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
        PackageManager.DONT_KILL_APP); 



和啓動應用:

String phoneNubmer = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     if (LAUNCHER_NUMBER.equals(phoneNubmer)) { 
      setResultData(null); 
      Intent appIntent = new Intent(context, Blank.class); 
      appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(appIntent); 
     } 


我躲在我的MainActivity
我已經創建了第二個活動
一個意向過濾器運行通過USSD應用代碼(例如:* 123456#等)
我叫第二個活動(空白)

+0

您應該編輯原始帖子,而不是將其發佈爲答案。 – Karakuri 2014-10-01 14:40:34

+0

好的,tnx回答 – Mahdi 2014-10-02 05:43:08

4

如果您禁用該活動,則無法啓動該活動。您實際想要執行的操作是禁用或刪除活動上的<intent-filter>。不幸的是,明顯的意圖過濾器不能被移除或者甚至被檢查(參見this bug)。

您可以做的是定義一個<activity-alias>,其中包含<intent-filter> s,並啓用/禁用此組件。當活動別名被禁用時,您仍然可以使用隱式意圖啓動目標活動,但應用程序不應出現在啓動器中,因爲禁用的組件是具有意圖過濾器的動作.MAIN和category.LAUNCHER 。

+0

這適用於API 23以前的版本。我在運行API 23的兩款不同手機上進行了測試,並在12秒後關閉應用程序,但未完全關閉,因爲我的應用程序具有藍牙連接,在應用程序關閉後不會關閉。任何解決方法? – pigswig 2017-02-22 20:47:51

+0

@pigswig這隻影響圖標是否出現在應用程序啓動器中。它與「關閉」一項活動無關(我甚至不確定你在這裏的「關閉」是什麼意思)。 – Karakuri 2017-02-22 20:54:05

+0

「閉幕」並不是單詞的最佳選擇。我有一個複選框,顯示「隱藏圖標」的活動。一旦用戶檢查它,大約12秒鐘後,活動就會消失,就像主頁按鈕被按下一樣。這發生在我的Nexus 6和Moto G3上,都在API 23上。此外,logcat也會重複顯示:proc activity list中的ActivityManager:Wtf,Activity ActivityRecord {d8828a9 u0 com.abc/.MainActivityAlias t6826 f}不使用proc ProcessRecord {944a36a 31088 :com.abc/u0a170}?!?使用null替代.' – pigswig 2017-02-22 21:18:08

相關問題