我是 android 初学者,正在开发一个 android 应用程序来监视用户通话时的网络状态(对于来电和去电)...
我可以通过实现 PhonestateListner 类并覆盖 onCallStateChanged 方法来监视网络状态。对于来电,我使用的是在 onCallStateChanged 方法内的 TelephonyManager 类中定义的常量(CALL_STATE_IDLE、CALL_STATE_OFFHOOK 和 CALL_STATE_RINGING),但这些常量无法正常工作对于拨出电话...
my question is
Run Code Online (Sandbox Code Playgroud)
请帮助我理解这个概念...感谢您的时间
我正在按照本教程为 Android 创建自定义表盘。我已经实现了广播接收器来检测时间变化,如下所示:
在我的活动中,我有静态块来过滤以下意图:
static {
intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_TIME_CHANGED);
intentFilter.addAction(Intent.ACTION_TIME_TICK);
intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
}
Run Code Online (Sandbox Code Playgroud)
我的接收者类别:
public class MyReciever extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
c = Calendar.getInstance();
Log.d("myapp", "time changed");
hrs = c.get(Calendar.HOUR_OF_DAY);
min = c.get(Calendar.MINUTE);
sec = c.get(Calendar.SECOND);
txt_hrs.setText(String.valueOf(hrs));
txt_mins.setText(String.valueOf(min));
txt_sec.setText(String.valueOf(sec));
}
}
Run Code Online (Sandbox Code Playgroud)
我已经在 oncreate() 中注册了接收器:
MyReciever myReciever = new MyReciever();
registerReceiver(myReciever,intentFilter);
Run Code Online (Sandbox Code Playgroud)
上面的代码在几小时和几分钟内工作正常,但在几秒钟内不起作用。
问题Intent.ACTION_TIME_TICK是它每分钟广播一次,而不是每秒一次。
我需要检测表盘上时钟每秒的时间变化。有人有“检测每秒时间变化”的解决方案吗?
android android-intent android-broadcast watch-face-api wear-os
我在其他问题中看到了使用此解决方案的多个答案,以了解飞行模式是否更改:
IntentFilter intentFilter = new
IntentFilter("android.intent.action.AIRPLANE_MODE_CHANGED");
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("AirplaneMode", "Service state changed");
}
};
context.registerReceiver(receiver, intentFilter);
Run Code Online (Sandbox Code Playgroud)
但现在我想知道 onReceive 方法中的飞行模式是否打开或关闭。
谢谢。
我正在尝试使用为其定义的按钮(操作)创建一个简单的通知。我设法正确显示它并为我的操作创建了一个 PendingIntent。我还创建了一个 BroadcastReceiver,应该在单击我的操作时调用它。但它的 onReceive() 方法没有被调用。我不知道为什么。我还在 AndroidManifest.xml 中注册了 BroadcastReceiver
主活动.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button notify = (Button) findViewById(R.id.notify);
notify.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent dismissIntent = new Intent("action1");
dismissIntent.setAction("action1");
PendingIntent action1intent = PendingIntent.getBroadcast(MainActivity.this, (int) System.currentTimeMillis(), dismissIntent, PendingIntent.FLAG_CANCEL_CURRENT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(MainActivity.this)
.setSmallIcon(R.drawable.ic_menu)
.setContentTitle("My notification")
.setContentText("Hello World!")
.addAction(R.drawable.ic_menu, "action 1", action1intent);
Intent resultIntent = new Intent(MainActivity.this, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(MainActivity.this);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = …Run Code Online (Sandbox Code Playgroud) android broadcastreceiver android-notifications android-broadcast android-broadcastreceiver
Firebase Analytics 跟踪许多默认事件:https://support.google.com/firebase/answer/6317485
他们中的一些人喜欢
是不会发送到受影响的包的 BroadcastIntents。例如,ACTION_PACKAGE_FIRST_LAUNCH 仅发送到安装程序包,而不发送到正在安装的包(源)。
Firebase Analytics 如何仍然设法跟踪这些事件?他们的方法是什么?
android android-intent firebase android-broadcast firebase-analytics
我有两个接收器,我想手动触发,但似乎无法做到。这些是我正在使用的命令:
adb -s deviceid shell am broadcast -a action android.intent.action.PHONE_STATE
或者
adb -s deviceid shell am broadcast -a action android.intent.action.MEDIA_BUTTON
我尝试添加-p mypackageor -nmypackage/myreceiver但它们从未被触发。我在 logcat 上也没有看到任何内容。Adb 返回result=0,不确定这意味着什么。
我想注册广播以获得低电量.如果电池状态达到某种程度,我想要警惕......
如果您有任何想法请帮帮我..
我的应用程序可以选择创建主屏幕快捷方式.
我创建这样的快捷方式:
Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
new Intent(ShortcutCreateActivity.this, ShortcutCreateActivity.class).putExtra(EXTRA_PROFILE_ID, profileId).putExtra(EXTRA_PROFILE_ACTION, item));
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, profileTitle);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bitmap);
Run Code Online (Sandbox Code Playgroud)
这按预期工作...当用户单击快捷方式时,ShortcutCreateActivity会启动,我会按照我的需要执行操作.
然而!我想避免开展活动的必要性.相反,我想创建一个发送广播的快捷方式.
我尝试用以下方法替换意图:
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
new Intent(INTENT_ACTION_THAT_I_WANT)
Run Code Online (Sandbox Code Playgroud)
但是当我单击快捷方式时,它会显示Toast"App is not installed".
是否可以创建发送广播而不是启动活动的主屏幕快捷方式?
(开始活动并快速完成它不是一种选择).
谢谢!
我想在我的应用程序中扫描条形码.我可以开始扫描,但我不知道如何检测扫描值.我的代码看起来像
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.pick, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// scan
this.getActivity().findViewById(R.id.scan).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// Start the scanner like in the example: https://developer.motorolasolutions.com/docs/DOC-1874#PROGRAMMING%20INTERFACE Intent intent = new Intent();
intent.setAction("com.motorolasolutions.emdk.datawedge.api.ACTION_SOFTSCANTRIGGER");
intent.putExtra("com.motorolasolutions.emdk.datawedge.api.EXTRA_PARAMETER", "TOGGLE_SCANNING");
view.getContext().sendOrderedBroadcast(intent, null, receiver, null, 0, null, null);
}
});
}
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void …Run Code Online (Sandbox Code Playgroud) android motorola barcode-scanner android-intent android-broadcast
如何取消注册附加到LocalBroadcastManager的接收器?
我试过了
unregisterReceiver(broadcastReceiver);
Run Code Online (Sandbox Code Playgroud)
但它给了我一个例外
java.lang.IllegalArgumentException:Receiver未注册:
这是我的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiverCancelPd, new IntentFilter(PelicanApplication.identifierCancelPd));
LocalBroadcastManager.getInstance(this).registerReceiver(bReceiverSignOut, new IntentFilter(PelicanApplication.identifierSignOut));
LocalBroadcastManager.getInstance(this).registerReceiver(bReceiverNearByDeliveries, new IntentFilter(PelicanApplication.identifierNBD));
}
@Override
protected void onStop() {
super.onStop();
unregisterReceiver(broadcastReceiverCancelPd);
unregisterReceiver(bReceiverSignOut);
unregisterReceiver(bReceiverNearByDeliveries);
}
Run Code Online (Sandbox Code Playgroud)