Pei*_*ein 7 android android-source
在设置应用程序中,我试图接收有关更改网络状态的消息。它看起来像这样:
<receiver android:name="com.android.settings.NetworkStateReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
public class NetworkStateReceiver extends BroadcastReceiver
{
public static final String TAG = "NetworkStateReceiver";
public static final String NETWORK_CHANGED_ACTION = "com.android.settings.NetworkStateReceiver.NETWORK_CHANGED";
@Override
public void onReceive( Context context, Intent intent )
{
Log.d(TAG, "Network state changed");
Intent i = new Intent();
i.setAction(NETWORK_CHANGED_ACTION);
context.sendBroadcast(i);
}
}
Run Code Online (Sandbox Code Playgroud)
我试图从这个接收器向 DeviceInfoFragment 发送消息,有接收器,它应该捕获这个广播:
private BroadcastReceiver mNetwrokStateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("NetworkStateReceiver_DEVICE_INFO", "network state changed");
if (isNetworkConnected()) {
Log.d("NetworkStateReceiver_DEVICE_INFO", "network connected");
mHelpPreference.setEnabled(true);
} else {
mHelpPreference.setEnabled(false);
Log.d("NetworkStateReceiver_DEVICE_INFO", "network disconnected");
}
}
};
Run Code Online (Sandbox Code Playgroud)
我在 onResume 中注册它并在 onPause 中取消注册。
但是我在这一行的NetworkStateReceiver中遇到错误:
context.sendBroadcast(i);
Run Code Online (Sandbox Code Playgroud)
在没有合格用户的情况下调用系统进程中的方法
有什么办法可以解决吗?
这只是一个警告。
您可以通过查看源代码看到这一点: https: //android.googlesource.com/platform/frameworks/base/+/b267554/core/java/android/app/ContextImpl.java
只需搜索方法“warnIfCallingFromSystemProcess()”
如果您正在开发市场应用程序,则无法消除此警告。
如果您是手机供应商,则可以添加到您的清单中
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"/>
Run Code Online (Sandbox Code Playgroud)
然后可以作为实际用户发送广播。
context.sendBroadcastAsUser(i, new UserHandle(UserHandle.USER_CURRENT));
Run Code Online (Sandbox Code Playgroud)
仅当正确配置时,启动的应用程序才会获得提升的权限。
| 归档时间: |
|
| 查看次数: |
26669 次 |
| 最近记录: |