gpt4 book ai didi

android - 将字符串从 Android Java Activity 传递到广播接收器

转载 作者:搜寻专家 更新时间:2023-11-01 09:06:01 25 4
gpt4 key购买 nike

在过去的几个小时里,我一直在浏览关于这个主题的其他问题,但我发现没有一个能够给我任何答案。

在后台将字符串从 Activity 传递到广播接收器的最佳方法是什么?

这是我的主要 Activity

public class AppActivity extends DroidGap {
SmsReceiver mSmsReceiver = new SmsReceiver();

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

ScrollView scroll;
scroll = new ScrollView(this);

Bundle bundle = getIntent().getExtras();
final String ownAddress = bundle.getString("variable");

registerReceiver(mSmsReceiver, new IntentFilter("MyReceiver"));
Intent intent = new Intent("MyReceiver");
intent.putExtra("passAddress", ownAddress);
sendBroadcast(intent);

Log.v("Example", "ownAddress: " + ownAddress);
}
}


这是我的广播接收器

public class AppReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {

final String ownAddress = intent.getStringExtra("passAddress");
Toast test = Toast.makeText(context,""+ownAddress,Toast.LENGTH_LONG);
test.show();

Log.v("Example", "ownAddress: " + ownAddress);

}
}


这是我的接收器的 list

<service android:name=".MyService" android:enabled="true"/>
<receiver android:name="AppReceiver">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_SENT"/>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
<receiver>
<service android:name=".MyServiceSentReceived" android:enabled="true"/>
<receiver android:name="AppReceiver">
<intent-filter android:priority="2147483645">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>

当广播接收器记录一个事件时,应用程序崩溃。我需要让它在幕后运行并从我的主要 Activity 中拉出一个字符串。

谁能帮我解决这个问题或指出正确的方向?

最佳答案

评论和聊天添加

您的字符串 ownAddress 将始终为空,除非 Intent 在 Bundle extra 中有一个带有键 passAddress 的字符串。任何时候你的接收器捕捉到一个 Intent(无论是来自 SMS_SENTSMS_RECEIVED 还是 BOOT_COMPLETED)ownAddress 都将为空,因为操作系统不提供名为 passAddress 的额外字符串。希望一切都清楚。

原始答案

我没有使用过 DroidGap,但这是您想要的常规 Android Activity 。

Activity :

public class AppActivity extends Activity {
AppReceiver mAppReceiver = new AppReceiver();

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

registerReceiver(mAppReceiver, new IntentFilter("MyReceiver"));

String string = "Pass me.";
Intent intent = new Intent("MyReceiver");
intent.putExtra("string", string);
sendBroadcast(intent);
}
}

接收者:

public class AppReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, intent.getStringExtra("string"), Toast.LENGTH_LONG).show();
}
}

不要忘记在 onDestroy() 中注销接收器,如下所示:

@Override
protected void onDestroy() {
unregisterReceiver(mAppReceiver);
super.onDestroy();
}

关于android - 将字符串从 Android Java Activity 传递到广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11834742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com