你好老乡程序员,代码风格/结构正确的Android
我不能找到一种合适的方式来路由我的申请,我想一个文件来决定哪些活动必须启动
我建立一个机器人应用程序一般包含:
-2的方式来启动
-3活动的
应用程序可以被鎏通过点击图标(标准推出)
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
和活动当有来电
<action android:name="android.intent.action.PHONE_STATE" />
在第一个安装有2活动的一个注册,一个使用开始nched应用。在这个 安装程序中,我添加了一个额外的活动来检查令牌是否存在并且路由到正确的活动。
在我现在的设置中,所有操作都在广播接收器中。我试图实现额外活动的逻辑。
我现在面临的问题是来电的检查,它总是推出相同的活动CallHandler,
我觉得路由广播接收机中的应用可能是不好的做法,但我不能找到一个更好的路由应用程序的方式,并且当前的代码不起作用。
你的帮助是非常感谢,下面的代码片段可能有助于解释我的问题:
清单:
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name=".RoutingCallReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</receiver>
<activity
android:name=".RegisterActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize|stateVisible" >
</activity>
<activity
android:name=".CallHandler"
android:label="@string/title_activity_main" >
</activity>
<activity
android:name=".CreateCallActivity"
android:label="@string/title_activity_create_call" >
</activity>
</application>
RoutingCallReceiver:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
public class RoutingCallReceiver extends BroadcastReceiver {
TelephonyManager telephony;
Intent in;
public void onReceive(Context context, Intent intent) {
PrimePhoneStateListener phoneListener = new PrimePhoneStateListener();
telephony = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
if(telephony.getCallState()== 1){
in = new Intent(context, CallHandler.class);
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(in);
}
else {
TokenIO tokenHandler = new TokenIO();
String token = tokenHandler.getToken(context);
Log.d("AAfter", "Token");
if(token.equals("") || token.equals(null)){
in = new Intent(context, RegisterActivity.class);
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(in);
}
else{
in = new Intent(context, CreateCallActivity.class);
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(in);
}
}
}
// when finish your job, stop listen to changes
public void onDestroy() {
telephony.listen(null, PhoneStateListener.LISTEN_NONE);
}
}
你是什么意思“当前代码不起作用”? 'if(token.equals(“”)|| token.equals(null))'中的条件从来就不是真的? – 2014-09-24 08:44:21
如前所述,CallHandler活动始终开始,所以问题出在 'if(telephony.getCallState()== 1)' – 2014-09-24 08:53:39
如果您有来电铃声,那正是它的样子。 – 2014-09-24 09:01:46