2012-02-22 202 views
5

我需要(如果可能的话)在我的项目中添加一个能力,当用户在拨号程序中输入##等代码时运行。我不确定这是可能的。目前,当我从应用程序文件夹中将我的应用程序午餐开始时,它只是为了好玩,我想知道我可以用代码进行午餐吗?Android,可以从拨号程序运行应用程序吗?

回答

6

您可以通过拨号程序启动应用程序活动类,但是您的应用程序应该在后台运行。为此你应该实现一个扩展到BroadcastReceiver的类。请遵循此参考码。

public class Example extends BroadcastReceiver 
{ 

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

     if (intent.getAction().equals(android.intent.action.NEW_OUTGOING_CALL)) { 
     String phoneNumber = intent.getExtras().getString(android.intent.extra.PHONE_NUMBER); 

     if(phoneNumber.equals("#1234#")) { 
      Intent intent1 = new Intent(context , YourActivity.class); 
      intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(intent1); 
     } 

     } 

    } 

} 
+0

我已经使用这个,但它也试图打开我的应用程序后打出去。如何使它实际上不打电话拨打的号码? – Jayce 2015-08-10 17:55:10

1

Priyank接受的答案是正确的。我只是想指出在代码中的一些更正Intent类

@Override 
public void onReceive(Context context, final Intent intent) { 
    if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){ 
     String phoneNumber = intent.getExtras().getString(Intent.EXTRA_PHONE_NUMBER); 

     if(phoneNumber.equals("#1234#")){ 
      Intent intent1 = new Intent(context, YourActivity.class); 
      intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(intent1); 
     } 

    } 
} 
+0

我已经使用过这个功能,但它也会在打开我的应用程序后尝试进行传出呼叫。如何使它实际上不打电话拨打的号码? – Jayce 2015-08-10 17:56:15

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

    if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) { 
     String phoneNumber = intent.getExtras().getString(Intent.EXTRA_PHONE_NUMBER); 

     if (phoneNumber.equals("#1234#")) { 
      Intent intent1 = new Intent(context, YourActivity.class); 
      intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(intent1); 
      setResultData(null); 
     } 

    } 

} 
+0

欢迎,请不要犹豫,解释你的代码。 – 2015-10-23 11:50:44

0
@Override 
public void onReceive(Context context, final Intent intent) { 
    if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){ 
     String phoneNumber = intent.getExtras().getString(Intent.EXTRA_PHONE_NUMBER); 

     if(phoneNumber.equals("#1234#")){ 
      Intent intent1 = new Intent(context, YourActivity.class); 
      intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(intent1); 
      setResultData(null); 
     } 

    } 
} 
+1

您发布了相同的答案两次,请删除一个 – 2015-10-23 12:22:39

0

其实我新。我有一个疑问,我必须把这个代码:

public class Example extends BroadcastReceiver 
{  
    @Override 
    public void onReceive(Context context, final Intent intent) { 

     if (intent.getAction().equals(android.intent.action.NEW_OUTGOING_CALL)) { 
     String phoneNumber = intent.getExtras().getString(android.intent.extra.PHONE_NUMBER); 

     if(phoneNumber.equals("#1234#")) { 
      Intent intent1 = new Intent(context , YourActivity.class); 
      intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(intent1); 
     } 

     } 

    }  
} 
+0

欢迎使用Stack Overflow!请参考[游览](http://stackoverflow.com/tour),环顾四周,阅读[帮助中心](http://stackoverflow.com/help),特别是[我该如何问一个好问题?](http://stackoverflow.com/help/how-to-ask)和[我可以问什么问题?](http://stackoverflow.com/help/on-topic)。从第二个环节来看:“提出作业帮助的问题必须包括您迄今为止解决问题所做的工作的总结,并描述您解决问题的难度。”你也必须提供你的问题**作为文字**,而不是图像。 – 2016-12-22 16:12:18

相关问题