如何使用 adb 在 Android 11 上触发 BroadcastReceiver?
How can I trigger a BroadcastReceiver on Android 11 using adb?
我有两个接收器想手动触发,但我似乎做不到。这些是我正在使用的命令:
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 returns result=0
,不知道那是什么意思。
试试这个。
adb -s deviceid shell am broadcast -a android.intent.action.VIEW -n com.mypackage.broadcast/com.mypackage.broadcast.Broadcaster
广播示例 class。
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 //Class你要开始
public final class Starter extends Activity {
@Override
protected final void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Do something
}
}
并且不要忘记将其放入您的清单中。
<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>
...
我有两个接收器想手动触发,但我似乎做不到。这些是我正在使用的命令:
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 returns result=0
,不知道那是什么意思。
试试这个。
adb -s deviceid shell am broadcast -a android.intent.action.VIEW -n com.mypackage.broadcast/com.mypackage.broadcast.Broadcaster
广播示例 class。
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 //Class你要开始
public final class Starter extends Activity {
@Override
protected final void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Do something
}
}
并且不要忘记将其放入您的清单中。
<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>
...