从the documentation开始,RemoteViews
的构造函数为
public RemoteViews (String packageName, int layoutId)
文档说packageName
是"包含布局资源的包的名称"。
layoutId
不会告诉您有关布局资源位置的所有信息吗?答案 0 :(得分:3)
由于Sirlate已回答“为什么需要这样做?”,我将尝试回答其余问题。
layoutId
不会告诉您有关布局资源位置的所有信息吗?
不,layoutId
,与其他资源一样,ID只是一个数字。当您通过R.layout.some_layout
引用它时,它实际上会引用ID本身作为数字。
它不会一直是res->布局吗?
其实不是!您可以将任何资源放在任何文件夹中(只要在/res
内),即使它是布局资源。 /res/layout/
只是一个方便的文件夹,因为Android已经首先定义了它。毕竟,Android只会将资源称为ID号。
你会把什么作为包名?
您希望使用布局的应用的包名称,如Sirlate所述。
为什么需要这个?
除Sirlate的答案外,如果您只有资源ID,操作系统将无法决定布局是哪个软件包/应用程序。
答案 1 :(得分:2)
如果您有多个小部件和应用程序,并且您使用相同的密钥对它们进行全部签名(使用相同的密钥签署应用程序允许他们访问彼此的数据。),那么您可能也可以访问它们,但没有相同的包名。