我的应用程序安装其他应用程序,它需要跟踪它已安装的应用程序.当然,这可以通过简单地保留已安装的应用程序列表来实现.但这不应该是必要的!PackageManager应该负责维护installedBy(a,b)关系.事实上,根据API,它是:
public abstract String getInstallerPackageName(String packageName) - 检索安装包的应用程序的包名称.这确定了包裹来自哪个市场.
使用Intent安装APK
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
使用Intent卸载APK:
Intent intent = new Intent(Intent.ACTION_DELETE, Uri.fromParts("package",
getPackageManager().getPackageArchiveInfo(apkUri.getPath(), 0).packageName,null));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
这显然不是Android Market安装/卸载软件包的方式.他们使用更丰富的PackageManager版本.通过从Android Git存储库下载Android源代码可以看到这一点.以下是与Intent方法相对应的两种隐藏方法.不幸的是,外部开发人员无法使用它们.但也许他们将来会是这样?
使用PackageManager安装APK
/**
* @hide
*
* Install a package. Since this may take a little while, the result will
* be posted back to the given observer. An installation will fail if the calling context
* lacks the {@link android.Manifest.permission#INSTALL_PACKAGES} permission, if the
* package named in …Run Code Online (Sandbox Code Playgroud) 将源代码附加到外部库是非常棒的.在哪里可以找到v4 支持包的源代码?优选地,它将是一个zip文件,可以很容易地附加到android-support-v4.jarEclipse中.
我发现Fragment #setRetainInstance(true)令人困惑.这是从Android Developer API中提取的Javadoc :
public void setRetainInstance(boolean retain)
控制是否在活动重新创建(例如从配置更改)中保留片段实例.这只能用于不在后栈中的片段.如果设置,则在重新创建活动时,片段生命周期会略有不同:
- onDestroy()不会被调用(但是onDetach()仍然会被调用,因为片段正在与其当前活动分离.
- 因为片段没有被重新创建,所以不会调用onCreate(Bundle).
- onAttach(活动)和onActivityCreated(捆绑)将仍然被调用.
问题:作为开发人员,您如何使用它,为什么它会使事情变得更容易?
我有以下类,它描述XY表面上的一个点:
class Point{
double x;
double y;
public Point(int x, int y){
this.x = x;
this.y = y;
}
}
Run Code Online (Sandbox Code Playgroud)
所以我想overlad +和-运营商有可能写代码运行:
Point p1 = new Point(1, 2);
Point p2 = new Point(3, 4);
Point resAdd = p1 + p2; // answer (4, 6)
Point resSub = p1 - p2; // answer (-2, -2)
Run Code Online (Sandbox Code Playgroud)
我怎么能用Java做呢?或者我应该使用这样的方法:
public Point Add(Point p1, Point p2){
return new Point(p1.x + p2.x, p1.y + p2.y);
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
有两个类,我们称之为X和O.属于这些类的许多元素在xy平面中展开.下面是两个类不可线性分离的示例.无法绘制直线,在线的每一侧完美地划分X和Os.

一般来说,如何确定两个类是否可线性分离?.我对一种算法感兴趣,该算法不对元素的数量或它们的分布做出假设.当然优选最低计算复杂度的算法.
保存在res/drawable/gradient_box.xml的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FFFF0000"
android:endColor="#80FF00FF"
android:angle="45"/>
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
(上面的形状定义取自当时的Android开发者指南.它没有错误.).
让我们尝试将它与TextView一起使用:
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Text with some crazy rectangle shape below it."
android:drawableBottom="@drawable/gradient_box"/>
Run Code Online (Sandbox Code Playgroud)
TextView显示就好像drawableBottom属性不在那里!但是,将形状设置为背景可以正常工作:
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Text with crazy background"
android:background="@drawable/gradient_box"/>
Run Code Online (Sandbox Code Playgroud)
将实际图像(例如a*.png)设置为android:drawableBottom也可以正常工作.
有任何想法吗?
我试图让Ehcache 3在不使用Spring引导的情况下使用Spring 4.
这是一个使用Spring Boot的工作示例,但我正在处理一个不使用Spring Boot的现有应用程序.
问题是spring-context-support(添加Spring的缓存注释)要求Ehcache的CacheManager在这个类路径上:net.sf.ehcache.CacheManager
但是,在Ehcache 3中,CacheManager类驻留在另一个类路径上:org.ehcache.CacheManager.
所以,基本上spring-context-support不支持Ehcache 3.你必须直接使用JSR-107注释,而不是Spring提供的注释.
但显然它适用于Spring Boot.也许有一种方法可以使它与标准的Spring应用程序一起工作.这就是我所希望的.我真的想要使用Spring自己的注释而不是JSR-107注释.
我遇到了ViewPager的问题,我的ListView正在丢失它的滚动位置.
可以使用以下命令轻松存储和恢复ListView的状态:
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.frag_cool_things, container, false);
AdvListView listView = (AdvListView) v.findViewById(R.id.lv0);
listView.setOnItemClickListener( mOnListItemClicked );
if (null != savedInstanceState)
{
listView.onRestoreListViewInstanceState(savedInstanceState.getParcelable("list_state"));
}
mListView = listView;
return v;
}
@Override
public void onSaveInstanceState (Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putParcelable("list_state", mListView.onSaveListViewInstanceState());
}
Run Code Online (Sandbox Code Playgroud)
然而问题是,当正在刷片段时会被onDestroyView()调用但从不调用onSaveInstanceState (Bundle outState).
旋转屏幕,这样恢复ListView状态就好了,但刷卡我无法弄清楚如何正确恢复列表.
我想更改根目录以将目录指向以下位置:
C:\ Documents and Settings\User\My Documents [documents]\wamp
我知道我必须在以下行中更改apache http.conf文件
DocumentRoot"c:/ Documents and Settings/User/My Documents/[documents] /"
但是,似乎[文档]旁边的方括号导致显示禁止错误:
被禁止
您无权访问此服务器上的/ login /.
有没有办法在目录树中使用方括号?[文件]以特定目的命名,它需要保持这种状态.否则,我需要做很多重新编码.
指向目录树时有什么规则?
提前致谢.
升级到macOS Sierra后,Spring Data和MongoDB之间的通信速度非常慢,基本上无法使用.
具体地说,与数据库的交互集合以前需要大约100毫秒,现在需要大约10分钟.
我正在使用最新的稳定版本的驱动程序和弹簧数据:
MongoDB Java驱动程序
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.3.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
Spring Data MongoDB
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.9.3.RELEASE</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
此外,我使用Homebrew安装了MongoDB.
mongod --version:
db version v3.2.9
git version: 22ec9e93b40c85fc7cae7d56e7d6a02fd811088c
OpenSSL version: OpenSSL 1.0.2h 3 May 2016
allocator: system
modules: none
build environment:
distarch: x86_64
target_arch: x86_64
Run Code Online (Sandbox Code Playgroud)
我不确定如何解决这个问题.如果您认为我应该将其发布在其他地方,请告诉我,我会的.
谢谢.
更新1:在尝试在docker容器中运行mongodb而不是在macOS Sierra上运行它之后,仍然存在缓慢的问题.
更新2:结束降级至El Capitan.