Notice: 函数 WP_Scripts::localize 的调用方法不正确$l10n 参数必须是一个数组。若要将任意数据传递给脚本,请改用 wp_add_inline_script() 函数。 请查阅调试 WordPress来获取更多信息。 (这个消息是在 5.7.0 版本添加的。) in /data/www/appblog/wp-includes/functions.php on line 6131

Android自定义广播设置只能由指定的APP接收

思路:类似给Activity的访问添加权限,给广播添加访问权限。Android中是可以自定义权限的,可以对四大组件的访问加上一层保护。

我们在使用Android中的API形式,或者使用adb命令都可以在外部打开一个应用的Activity/Service,以及发送一个广播。所以这个对于一个应用来说是很不安全的,即权限是一种保护机制。

发送广播

Intent intent = new Intent("me.yezhou.AppBlog");
intent.addCategory("receiver");
intent.putExtra("message", "test");
sendOrderedBroadcast(intent, "me.yezhou.receiver");

AndroidManifest.xml

<!--自定义权限-->
<uses-permission android:name="me.yezhou.receiver" ></uses-permission>
<permission android:protectionLevel="normal" android:name="me.yezhou.receiver"></permission>

接收广播

public class AppBlogReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            Log.d("yezhou", "AppBlogReceiver: " + bundle.getString("message"));
        }
    }

}

AndroidManifest.xml

<!--自定义权限-->
<uses-permission android:name="me.yezhou.receiver" ></uses-permission>

<application>
    <receiver android:name="me.yezhou.receiver.AppBlogReceiver" android:permission="me.yezhou.receiver">
        <intent-filter>
            <action android:name="me.yezhou.AppBlog" />
            <category android:name="receiver" />
        </intent-filter>
    </receiver>
</application>

同理我们可以对其他组件进行权限保护(可能用的比较多的是对Activity访问添加权限)。

上一篇 Android组件化开发之ImageLoader封装
下一篇 Android getContentResolver().query 获取文件路径NullPointerException