标签: android-broadcast

如何获取拨出电话的通话状态?

我是 android 初学者,正在开发一个 android 应用程序来监视用户通话时的网络状态(对于来电和去电)...

我可以通过实现 PhonestateListner 类并覆盖 onCallStateChanged 方法来监视网络状态。对于来电,我使用的是在 onCallStateChanged 方法内的 TelephonyManager 类中定义的常量(CALL_STATE_IDLE、CALL_STATE_OFFHOOK 和 CALL_STATE_RINGING),但这些常量无法正常工作对于拨出电话...

 my question is
Run Code Online (Sandbox Code Playgroud)
  1. 有来电时如何监控通话状态(RINGING,OFF_HOOK, IDLE)??
  2. android中是否有任何API来监控拨出电话的通话状态???如果是,那么请说明...

请帮助我理解这个概念...感谢您的时间

android telephonymanager android-activity android-broadcast

3
推荐指数
1
解决办法
1万
查看次数

Android 中如何检测每秒时间的变化?

我正在按照本教程为 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

3
推荐指数
1
解决办法
2729
查看次数

如何知道 BroadcastReceiver 中的飞行模式是打开还是关闭?

我在其他问题中看到了使用此解决方案的多个答案,以了解飞行模式是否更改:

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 方法中的飞行模式是否打开或关闭。

谢谢。

android broadcastreceiver android-intent android-broadcast

3
推荐指数
1
解决办法
8134
查看次数

BroadcastReceiver 不触发通知操作点击

我正在尝试使用为其定义的按钮(操作)创建一个简单的通知。我设法正确显示它并为我的操作创建了一个 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

3
推荐指数
1
解决办法
3179
查看次数

Firebase Analytics 如何跟踪其自动事件?

Firebase Analytics 跟踪许多默认事件:https://support.google.com/firebase/answer/6317485

他们中的一些人喜欢

  • 首先打开
  • 应用程序删除
  • 应用程序清除数据
  • 应用程序更新

是不会发送到受影响的包的 BroadcastIntents。例如,ACTION_PACKAGE_FIRST_LAUNCH 仅发送到安装程序包,而不发送到正在安装的包()。

Firebase Analytics 如何仍然设法跟踪这些事件?他们的方法是什么?

android android-intent firebase android-broadcast firebase-analytics

3
推荐指数
1
解决办法
4063
查看次数

如何使用 adb 在 Android 11 上触发 BroadcastReceiver?

我有两个接收器,我想手动触发,但似乎无法做到。这些是我正在使用的命令:

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,不确定这意味着什么。

android adb broadcastreceiver android-broadcast

3
推荐指数
1
解决办法
4958
查看次数

如何在Android中注册低电量的广播接收器?

我想注册广播以获得低电量.如果电池状态达到某种程度,我想要警惕......

如果您有任何想法请帮帮我..

android power-management android-broadcast

2
推荐指数
1
解决办法
5679
查看次数

创建发送广播的快捷方式

我的应用程序可以选择创建主屏幕快捷方式.

我创建这样的快捷方式:

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".

是否可以创建发送广播而不是启动活动的主屏幕快捷方式?

(开始活动并快速完成它不是一种选择).

谢谢!

android android-intent android-broadcast

2
推荐指数
1
解决办法
798
查看次数

获得摩托罗拉TC55的扫描价值

我想在我的应用程序中扫描条形码.我可以开始扫描,但我不知道如何检测扫描值.我的代码看起来像

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

2
推荐指数
1
解决办法
4263
查看次数

如何取消注册附加到LocalBroadcastManager的接收器?

如何取消注册附加到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)

android android-broadcast

2
推荐指数
1
解决办法
2269
查看次数