簡體   English   中英

android從應用程序列表中隱藏應用程序並從廣播接收器啟動它

[英]android hide application from the list of applications and launch it from broadcast receiver

我想從應用程序列表中隱藏我的應用程序,這樣第三方就不會知道安裝了這個應用程序。

我看到這可以通過以下方式實現:如果您想從應用程序啟動器中隱藏您的應用程序,那么請不要在您的任何活動中包含android.intent.category.LAUNCHER

我試過了,它正在工作。 現在我需要定義一個快捷方式來啟動我的應用程序。

我正在嘗試通過廣播接收器來實現這一目標。 onreceive如果撥打的號碼 = 我的模式,我將檢查我的onreceive ,然后啟動我的活動

我在這里有一些問題

  1. 這是正確的做法嗎

  2. 請參閱下面的接收器代碼,這里我的接收器被調用,但與處理“撥號”的系統應用程序一起也被調用。 因此,即使我撥打我的模式,在顯示我的活動后,它也會撥打電話。 如果撥打的號碼符合我的模式,我想停止撥打電話。 我怎樣才能做到這一點

  3. 我正在啟動我的活動作為一項新任務。 當我第一次運行我的應用程序時,我的活動屏幕即將出現。 但是當我再次撥號時,它沒有被帶到前面。 我怎樣才能做到這一點。 我想如果我解決了我之前的問題,這將得到照顧。

     public class OutgoingCallInterceptor extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { final String originalNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); this.setResultData("0123456789"); final String newNumber = this.getResultData(); String msg = "Intercepted outgoing call. Old number " + originalNumber + ", new number " + newNumber; Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); Intent intent1 = new Intent(context,ShowMessageActivity.class); intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent1); } }

清單文件

<application android:icon="@drawable/icon" android:label="Outgoing Call Interceptor">

    <receiver android:name="OutgoingCallInterceptor">
        <intent-filter android:priority="1">
            <action android:name="android.intent.action.NEW_OUTGOING_CALL"></action>
        </intent-filter>
    </receiver>
    <activity android:name="ShowMessageActivity" ></activity>

</application>

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>

但是,如果通過應用程序列表,您的意思是說所有已安裝的應用程序,那么我想這是不可能的,您可以使用

<action android:name="android.intent.action.CREATE_SHORTCUT" />

創建快捷方式

對於您的其他要求無法實現,因為我還沒有找到以這種方式隱藏我的應用程序的方法,而且手機是個人設備。而且您可以使用廣播接收器來了解撥號意圖何時啟動。但我想您再次無法獲得鍵入的鍵是一個不同的應用程序。

  1. 這不是正確的,但也許是唯一的方法:)
  2. 您可以嘗試在接收器上調用 this.abortBroadcast() 以中止呼叫。 不幸的是,我現在無法檢查它,但它應該可以工作。
public class OpenApplication extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    String number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
    String compare_num = "777";
    if (number.equals(compare_num)) {
        Intent myintent = new Intent(context, MainActivity.class);
        myintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(myintent);
    //  abortBroadcast();
        setResultData(null);
    }
}

}

   <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />

   <!-- OPEN APP -->
    <receiver android:name="receiver.OpenApplication" >
        <intent-filter android:priority="0" >
            <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
        </intent-filter>
    </receiver>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM