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

标签 android broadcastreceiver adb android-broadcast

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

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 mypackage 或 -n mypackage/myreceiver 但它们从未被触发。我在 logcat 上也没有看到任何内容。 Adb 返回 result=0,不知道是什么意思。

最佳答案

试试这个。

adb -s deviceid shell am broadcast -a android.intent.action.VIEW -n com.mypackage.broadcast/com.mypackage.broadcast.Broadcaster

广播类示例。

import android.content.*;
import android.widget.*;

public final class Broadcaster extends BroadcastReceiver
{   
    @Override
    public final void onReceive(final Context context, final Intent intent) {
        intent.setClass(context, Starter.class);
        //Note: without this flag android will throw a runtime exception.
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        
        try {
            context.startActivity(intent);
        } catch (final Exception e) {
            Toast.makeText(context, e.getMessage(), 1) .show();
            forceStop();
        }
        forceStop();
    }
    
    private final void forceStop() {
        clearAbortBroadcast();
        //throw new RuntimeException();
        System.exit(0);
    }
    
}

Starter.java//你要启动的类

public final class Starter extends Activity {
     @Override
      protected final void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //Do something
      }
}

并且不要忘记将其放入您的 list 中。

 <application
android:noHistory="true"
android:launchMode="singleInstance"
android:excludeFromRecents="true"
android:exported="true"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
        
<!-- RECEIVER -->
    <receiver 
        android:name="com.mypackage.broadcast.Broadcaster"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.SEND" />
            <data android:mimeType="*/*" />
            </intent-filter>
    </receiver>
...

关于android - 如何使用 adb 在 Android 11 上触发 BroadcastReceiver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65901553/

相关文章:

android - 更改Android中短信的读取状态

Android Studio 不显示 USB 设备

android - java.lang.OutOfMemoryError处理来自Camera的14个数据

android - DatePickerDialog 显示例如M 加整数代替月份名称

android - 仅从android 0 --min-api 26开始支持Invoke-customs。

android - 以编程方式为 Activity 设置默认浏览器

java - 难以通过 Intent 在广播接收器上发送数据

java - Android Oreo+ 中的 AlarmManager 和 BroadcastReceiver

android - Android Studio中的ADB

Android adb显示 "Allow USB debugging?"窗口