删除或隐藏android中的通知栏

时间:2012-12-20 12:54:05

标签: android notifications

我正在开发一个应用程序,当应用程序打开时,可能会有任何未接来电显示通知,我如何隐藏或删除通知栏&有没有办法实现它。 我已将所有代码放在我的应用程序中,

requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                WindowManager.LayoutParams.FLAG_FULLSCREEN);

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" 

但我使用广播接收器打开活动文件,然后在未接来电或消息到达时看到通知

3 个答案:

答案 0 :(得分:3)

您可以使用此代码:

public class FullScreen
    extends android.app.Activity
{
    @Override
    public void onCreate(android.os.Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.main);
    }
}

答案 1 :(得分:1)

我遇到的问题和你的问题完全相同,但是我对来电和拨打电话都很感兴趣。我找到了来电/未接来电的解决方案,但尚未拨打电话。

您要做的是以下内容:

1.创建BroadCastReceiver类以收听具有最高优先级的来电:

a。在Manifest.xml中添加:

    <receiver android:name=".MyPhoneBroadcastReceiver">
        <intent-filter android:priority="99999">
            <action android:name="android.intent.action.PHONE_STATE" />
        </intent-filter>
    </receiver>

b。然后是班级

@Override
public void onReceive(final Context context, Intent intent) {

    Bundle extras = intent.getExtras();

    if (extras != null) {

        String state = extras.getString(TelephonyManager.EXTRA_STATE);          
        final String incomingNumber = extras.getString("incoming_number");

        Handler callActionHandler = new Handler();

        Runnable runRingingActivity = new Runnable(){
            @Override
            public void run() {
                 //Notice the intent, cos u will add intent filter for your class(CustomCallsReceiver)
                Intent intentPhoneCall = new Intent("android.intent.action.ANSWER");
                intentPhoneCall.putExtra("INCOMING_NUM", incomingNumber);
                intentPhoneCall.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(intentPhoneCall);
            }
        };
        if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
            //increase the delay amount if problem occur something like -the screen didn't show up- that's the key about this method(the delay).
            callActionHandler.postDelayed(runRingingActivity, 100);    
        }
        if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
            callActionHandler.removeCallbacks(runRingingActivity);
        }

    }
}

2.a.在Manifest.xml文件中,为您将用作客户呼叫接收者的类添加此意图过滤器。

    <activity android:name="CustomCallsReceiver" android:noHistory="true" android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.ANSWER" />
             <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>    
    </activity>

2.b.CustomeCallsReceiver类:

public class CustomCallsReceiver extends Activity {

private String TAG = "CustomCallsReceiver";
String incomingNumber, caller;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.custome_calls_receiver);

    TextView number = (TextView) findViewById(R.id.number);
    number.setGravity(Gravity.CENTER);

    incomingNumber = getIntent().getExtras().getString("INCOMING_NUM");
    caller = getCallerName(incomingNumber);

    if (caller != null) {
        number.setText(caller + "\n" + incomingNumber);  }  }

3.最后当然不要忘记在Manifest.XML文件中添加不是标题或通知栏的主题

    <application
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen">

答案 2 :(得分:0)

您需要在Android清单.xml ..

中设置主题
 android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" 

希望这会对你有帮助..

如果您将其设置为应用程序主题,它将使您应用的所有页面生效..

   <application
         android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" 
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
         >