我正在尝试以编程方式使用以下代码调用数字:
String number = ("tel:" + numTxt.getText());
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(number));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
我在Manifest中设置了权限:
<uses-permission android:name="android.permission.CALL_PHONE"/>
Run Code Online (Sandbox Code Playgroud)
我正在使用真实设备进行测试和调试,它是带有Android M的Nexus 5,我的compileSdkVersion是23.我得到以下安全例外:
error: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxxx cmp=com.android.server.telecom/.components.UserCallActivity } from ProcessRecord{cbbd7c1 5228:com.dialerTest.DialerApp/u0a96} (pid=5228, uid=10096) with revoked permission android.permission.CALL_PHONE
Run Code Online (Sandbox Code Playgroud)
我在网络和这个社区搜索了类似的问答,但找不到答案.任何帮助将不胜感激.
为Android N编译我遇到了一个问题FileProvider
.我需要让用户从相册中选择图像/用相机拍照然后将其裁剪成方形.
我已经成功实现了FileProvider
用相机拍摄图像,但是从图库中选择图像时遇到了严重的问题.问题是在库中有很多来自不同地方的文件,例如我有Exception:
java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/6133-3766/DCIM/100ANDRO/DSC_0035.JPG
Run Code Online (Sandbox Code Playgroud)
所以问题是,我可以把什么放到file_paths.xml来访问任何地方/storage/
.我不能依赖于确切的路径,因为可能有来自WhatsApp和类似应用程序的图片,例如WhatsApp图像获取此路径:
/storage/emulated/0/WhatsApp/Media/WhatsApp Images/IMG-20160821-WA0000.jpg
Run Code Online (Sandbox Code Playgroud)
我已设法解决空路径:
<external-path name="external_storage" path=""/>
其类似于Environment.getExternalStorageDirectory()
根据文档.
但仍然无法弄清楚如何处理存储在其中的图像/storage/SOME_DIR/
.请帮忙.
我早上打开了我的项目,这一行显示在Gradle
app模块中.
有三个选项:Move changes
,Save Changelist
和Ignore
.
有人知道什么是错的,我该怎么办?
我想知道是否还有存根的价值Build.Version.SDK_INT
?假设我在以下行中有以下几行ClassUnderTest
:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
//do work
}else{
//do another work
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能涵盖所有代码?
我的意思是我想用不同的SDK_INT运行两个测试来输入两个块.
有可能在android 本地单元测试中使用Mockito
/ PowerMockito
?
谢谢
Android 5.0(API级别21)允许企业设置托管配置文件.如果设备具有托管配置文件,则配置文件的设置由企业管理员控制.管理员可以选择允许该配置文件使用哪些应用,并且可以控制配置文件可用的设备功能.
假设我们在Google Play Market中有一个应用程序,并且一些客户也可以通过移动设备管理配置文件安装该应用程序.如何以编程方式区分这些应用程序版本?换句话说,如何确保特定应用程序版本由企业管理员(位于工作资料下)管理?提前致谢.
所以当前我有一个AsyncTask类,当我点击一个按钮时,它运行和POST的数据到我的服务器(效果很好).
我现在尝试做的是处理用户未连接到互联网时发生的情况.所以我设置了这些类,以便在互联网连接时通知应用程序,以便数据可以自动发送到服务器.
AsyncTask类(内部类)
private class HttpAsyncTask extends AsyncTask<String, Void, String> {
ProgressDialog dialog = new ProgressDialog(getActivity());
final AlertDialog finishedDialog = new AlertDialog.Builder(getActivity())
.setCancelable(false)
.setPositiveButton(android.R.string.ok, null)
.create();
@Override
protected String doInBackground(String... urls) {
onProgressUpdate("Uploading Data...");
return POST(urls[0]);
}
@Override
protected void onPreExecute() {
this.dialog.show();
finishedDialog.setOnShowListener(new DialogInterface.OnShowListener(){
@Override
public void onShow(DialogInterface dialog) {
Button b = finishedDialog.getButton(AlertDialog.BUTTON_POSITIVE);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// navigate to match summary.....
finishedDialog.dismiss();
}
});
}
});
}
protected void onProgressUpdate(String msg) { …
Run Code Online (Sandbox Code Playgroud) 我正面临着奇怪的警告,试图自定义工具栏外观.我把RelativeLayout
里面android.support.v7.widget.Toolbar
重新组织起来Toolbar
.一切正常,并且在仿真器和设备上都按预期显示.唯一的问题是出现在.xml文件中的恼人警告,如下所示:
问题是实际问题是什么,它如何损害我的应用程序以及如何解决此警告.据我所知Toolbar
表现为ViewGroup
,为什么RelativeLayout
不允许是它的孩子?谢谢.
android android-layout android-relativelayout android-toolbar
我有一个简单的Activity和Retained Fragment,就像Alex Lockwood的博客文章一样.
我的活动内容如下onCreate()
:
FragmentManager fm = getSupportFragmentManager();
retainedFragment = (GridFragment) fm.findFragmentByTag(RETAINED_FRAGMENT_TAG);
// If the Fragment is non-null, then it is currently being
// retained across a configuration change.
if (retainedFragment == null) {
retainedFragment = new GridFragment();
fm.beginTransaction().add(retainedFragment, RETAINED_FRAGMENT_TAG).commit();
}else{
list = retainedFragment.getList();
System.out.println(list.size());//OUTPUT 12
}
Run Code Online (Sandbox Code Playgroud)
我的Fragments
' onAttach()
是:
@Override
public void onAttach(Context activity) {
super.onAttach(activity);
mCallbacks = (TaskCallbacks) activity;
System.out.println("here"); //OUTPUT here
}
Run Code Online (Sandbox Code Playgroud)
现在,在每个屏幕旋转我都有非常奇怪的输出:
I/System.out:这里
W/FragmentManager:moveToState:GridFragment {95fc9db#0 retained_tag}的片段状态未内联更新; 预期状态1找到0
I/System.out:12
这个奇怪的警告来自我的输入之间?怎么处理呢?提前致谢!
我使用SafetyNet API检查设备是否已 root 并使用以下有用的代码,但这使用 Android 验证 API 来验证 JWT 签名:
https://github.com/scottyab/safetynethelper
我想在客户端进行验证只是为了减少另一个 Web 服务的开销,而且它每天只有 10k 请求的限制。
所以解码 JWS 后我得到以下信息
JWS 消息响应示例
xxxx.yyy.zzzz
标头数据
{"alg":"RS256","x5c":["<certificate1 string>","<certificate2 string>"]}
Run Code Online (Sandbox Code Playgroud)
有效载荷数据
{"nonce":"<nounce>",
"timestampMs":1472794339527,
"apkPackageName":"<apkPackageName>",
"apkDigestSha256":"<sha digest string>",
"ctsProfileMatch":true,
"extension":"<extension string>",
"apkCertificateDigestSha256":["<apkCertificateDigestSha256 string>"],"basicIntegrity":true}
Run Code Online (Sandbox Code Playgroud)
如果执行 Base64 解码,此部分中的签名将变得不可读,因此下面是 JWS 最后一个元素中收到的签名字符串
Gw09rv1aBbtd4Er7F5ww_3TT1mPRD5YouMkPkwnRXJq8XW_cxlO4428DHTJdD8Tbep-Iv3nrVRWt2t4pH1uSr2kJ9budQJuXqzOUhN93r2Hfk-UAKUYQYhp89_wOWjSCG4ySVHD4jc9S1HrZlngaUosocOmhN4SzLZN5o8BXyBdXkjhWwgArd4bcLhCWJzmxz5iZfkhDiAyeNRq09CeqjRx_plqAy8eR_OaI_2idZBNIGfd2KmLK_CKaeVjDxuC4BzJsIlVRiuLrvP362Wwhz4r1bHh8flmHr88nK99apP2jkQD2l7lPv8y5F3FN3DKhJ15CzHR6ZbiTOw1fUteifg
Run Code Online (Sandbox Code Playgroud)
现在根据谷歌
“验证兼容性检查响应:从 JWS 消息中提取 SSL 证书链。验证 SSL 证书链并使用 SSL 主机名匹配来验证叶证书是否颁发给主机名 attest.android.com。使用证书来验证JWS 消息的签名。”
我确实有证书字符串和签名,我应该如何验证 SSL 证书(该证书是第二个证书上的字符串和主机名匹配)以及如何验证签名。
我需要这方面的指导,剪断代码会非常有帮助。
我正在尝试使用MobileIron EMM为我的应用程序设置远程配置。我已经按照开发人员指南中的说明进行了所有操作:1.我设置了清单:
...
<meta-data
android:name="android.content.APP_RESTRICTIONS"
android:resource="@xml/app_restrictions"/>
</application>
Run Code Online (Sandbox Code Playgroud)
2.我已经描述了限制:
<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android">
<restriction
android:title="@string/some_title"
android:key="SOME_KEY"
android:restrictionType="string"
android:defaultValue="123"/>
</restrictions>
Run Code Online (Sandbox Code Playgroud)
3.我正在尝试接收以下内容:
RestrictionsManager manager = (RestrictionsManager) context.getSystemService(Context.RESTRICTIONS_SERVICE);
Bundle b = manager.getApplicationRestrictions();
if(b!=null){
if(b.containsKey("SOME_KEY")) {
return b.getString("SOME_KEY");
}else{
System.out.println("bundle is not null");
for (String s: b.keySet()){
System.out.println("key in b is : " + s);
}
System.out.println(b.isEmpty() + " bundle is empty");
}
}else{
System.out.println("Bundle is null");
}
return "";
}
Run Code Online (Sandbox Code Playgroud)
我总是得到输出:
bundle is not null
true bundle is empty
Run Code Online (Sandbox Code Playgroud)
尽管我已为限制设置了默认值。为什么我至少没有获得限制的默认值?为什么我从未获得实际值(在服务器端,我已经使用MobileIron Cloud及其AppConnect配置设置了值)?尝试了几种设备。我想念什么?请帮忙。我的目标是为应用程序远程设置一些键值。
android ×10
java ×3
mdm ×2
cryptography ×1
git ×1
gradle ×1
jwt ×1
mobileiron ×1
mockito ×1
powermock ×1
unit-testing ×1
validation ×1