Mise à jour -- 09 Mai 2013 *j'ai essayé de mettre en œuvre le pain grillé du récepteur de radiodiffusion de la méthode onReceive parce que toast est un composant natif d'Android, mais c'est aussi de ne pas obtenir de apparaît dans Android 4.1 (Jelly Bean).
Mon idée était de mettre en œuvre le pain grillé du récepteur de radiodiffusion de la méthode onReceive et par la suite de changer son design en fonction de nos besoins et de paramétrage de la durée de l'affichage. Mais un autre problème est que findViewById ne fonctionne pas dans le récepteur de radiodiffusion, donc je pense que nous avons à faire à un LinearLayout par programmation pour la personnalisation du pain grillé.*
Mise à jour -- Après bounty aussi je ne suis pas exactement la chose que je cherche, mais je vais revenir à tous, je suis en train de travailler sur elle. De toute façon, ce code fonctionne pour la plupart des téléphones Android. Si quelqu'un va utiliser et attraper la solution pour elle, s'il vous plaît écrire ici afin que tout le monde peut obtenir le bénéfice. Merci pour toutes vos réponses.
Je suis en train d'élaborer un récepteur de radiodiffusion pour en venir à des appels sur Android et sur les appels entrants que je veux gonfler un pop-up sur le natif de l'écran d'appel entrant.
J'ai terminé ce code. Mais maintenant le problème est que dans le système d'exploitation Android 4.1 (Jelly Bean) de l'API de niveau 17 quand un téléphone sonne, l' PHONE_STATE
est à venir comme OFF HOOK
, et si je suis à l'appel d'une activité, il est appelé, mais le code qu'il ne soit pas exécuté. Je suis d'inscription le code:
Mon récepteur de radiodiffusion
package com.example.popwindowonincomingcallscreen;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.util.Log;
public class IncomingBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("IncomingBroadcastReceiver: onReceive: ", "flag1");
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
Log.d("IncomingBroadcastReceiver: onReceive: ", state);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)
|| state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
Log.d("Ringing", "Phone is ringing");
Intent i = new Intent(context, IncomingCallActivity.class);
i.putExtras(intent);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
Wait.oneSec();
context.startActivity(i);
}
}
}
Une activité qui je l'appelle:
import android.app.Activity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.View.MeasureSpec;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
public class IncomingCallActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
try {
Log.d("IncomingCallActivity: onCreate: ", "flag2");
*/ After this line, the code is not executed in Android 4.1 (Jelly Bean) only/*
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
Log.d("IncomingCallActivity: onCreate: ", "flagy");
setContentView(R.layout.main);
Log.d("IncomingCallActivity: onCreate: ", "flagz");
String number = getIntent().getStringExtra(
TelephonyManager.EXTRA_INCOMING_NUMBER);
TextView text = (TextView) findViewById(R.id.text);
text.setText("Incoming call from " + number);
}
catch (Exception e) {
Log.d("Exception", e.toString());
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Après
try {
Log.d("IncomingCallActivity: onCreate: ", "flag2");
}
Le code n'est pas en cours d'exécution dans Android 4.1 (Jelly Bean), mais dans d'autres versions, il est de travail.
J'ai essayé presque tous les moyens que je peux faire. Ce code affiche une translucide activité au cours de l'appel des indigènes de l'écran, et il ne bloque pas les contrôles de fond, comme de décrocher le téléphone. Mais je le veux bien comme un véritable interlocuteur. J'ai joint un aperçu de la vraie appelant est l'affichage d'une fenêtre sur l'écran d'appel entrant.
Comment puis-je obtenir cette fonctionnalité pour une application Android?
C'est une véritable appelant fonctionne:
Mon présent de sortie: