GVKun编程网logo

Android 8.0+ 更新安装 apk 失败的问题(android更新下载)

1

本文将分享Android8.0+更新安装apk失败的问题的详细内容,并且还将对android更新下载进行详尽解释,此外,我们还将为大家带来关于(二)Centos7下Yum更新安装PHP5.5,5.6,

本文将分享Android 8.0+ 更新安装 apk 失败的问题的详细内容,并且还将对android更新下载进行详尽解释,此外,我们还将为大家带来关于(二) Centos7 下 Yum 更新安装 PHP5.5,5.6,7.0、Android 4.2 通知通过 PendingIntent 启动 Activity 失败的问题、Android APK:使用 Android Studio 调试 APK、android – apk(.apk)和app bundle(.aab)之间的区别的相关知识,希望对你有所帮助。

本文目录一览:

Android 8.0+ 更新安装 apk 失败的问题(android更新下载)

Android 8.0+ 更新安装 apk 失败的问题(android更新下载)

最近做项目发现 Android 8.0+ 更新安装 apk 时 出现安装失败的情况  总结原因是 缺少安装的权限

Android 8.0 (Android O) 为了针对一些流氓软件引导用户安装其他无关应用。在应用权限设置的 “特殊访问权限” 中,加入了 “安装其他应用” 的设置。

简单的方法  可以直接在 Manifest.xml 中加入下面的权限:(亲测可用)

<uses-permissionandroid:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

另外当我们执行安装的代码后 都会加入杀死进程的代码 如下:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                uri = FileProvider.getUriForFile(this, "com.example.fileprovider",tempFile);
                   //此处为Uri临时授权
                intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            } else {
                uri = Uri.fromFile(tempFile);
            }
private void install(String apkPath) {
Intent intent = new Intent(Intent.ACTION_VIEW);
//Android 7.0+ 需要用FileProvider的方式访问隐私目录(比如相册)
if (Environment.SYSTEM_VERSION_CODE >= Build.VERSION_CODES.N) {
uri = FileProvider.getUriForFile(this, "com.example.fileprovider",tempFile);
//此处为Uri临时授权
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
uri = Uri.fromFile(tempFile);
}else{
uri = Uri.fromFile(tempFile);
}
intent.setDataAndType(uri, "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);

//最后杀死进程
Handler mHandler=new Handler(context);
mHandler.postDealy(new Runnable(){
public void run(){
//或者是 System.exit(0);
android.Process.KillProcess((android.os.Process.myPid());

}
},500);//在这里延迟 500ms 是为了防止app使用FileProvider获取隐私文件时被杀死 导致安装失败

}

 

(二) Centos7 下 Yum 更新安装 PHP5.5,5.6,7.0

(二) Centos7 下 Yum 更新安装 PHP5.5,5.6,7.0

yum 源默认的版本太低了,手动安装有一些麻烦,想采用 Yum 更新安装的可以使用下面的方案:

1. 检查当前安装的 PHP 包

yum list installed | grep php

如果有安装的 PHP 包,先删除他们

yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x86_64

 

2、更换 rpm 源

Centos 5.X:
    rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm
CentOs 6.x:
    rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
CentOs 7.X:
    rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

 

如果想删除上面安装的包,重新安装

rpm -qa | grep webstatic
rpm -e  上面搜索到的包即可

3. 运行 yum install
php5.5

yum install php55w.x86_64 php55w-cli.x86_64 php55w-common.x86_64 php55w-gd.x86_64 php55w-ldap.x86_64 php55w-mbstring.x86_64 php55w-mcrypt.x86_64 php55w-mysql.x86_64 php55w-pdo.x86_64

php5.6

yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64
  • 1

php7.0

yum install php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-mysql.x86_64 php70w-pdo.x86_64

4. 安装 PHP FPM

yum install php55w-fpm 
yum install php56w-fpm 
yum install php70w-fpm
systemctl enable php-fpm.service【开机自启动】

本次更新升级 PHP 版本即可完成!

本文同步分享在 博客 “lxw1844912514”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与 “OSC 源创计划”,欢迎正在阅读的你也加入,一起分享。

Android 4.2 通知通过 PendingIntent 启动 Activity 失败的问题

Android 4.2 通知通过 PendingIntent 启动 Activity 失败的问题

01-09 11:37:43.733: WARN/ActivityManager(92): Unable to send startActivity intent java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10800000 cmp=org.goodev/.activities.ProjectActivity bnds=[254,64][466,140] } from null (pid=-1, uid=10073) requires null at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:1973) at com.android.server.am.ActivityManagerService. startActivityInPackage(ActivityManagerService.java:2271) at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:212) at com.android.server.am.ActivityManagerService. startActivityIntentSender(ActivityManagerService.java:2134) at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:211) at com.android.server.am.ActivityManagerService. onTransact(ActivityManagerService.java:1467) at android.os.Binder.execTransact(Binder.java:320) at dalvik.system.NativeStart.run(Native Method)


值得注意的地方用红色标示了。

研究了一下发现,该问题应该是 4.2 关于安全加强控制导致的。 解决该问题比较简单,在 AndroidManifest.xml 文件中 该 Activity 声明的地方 添加一个 “android:exported=”true”” 属性即可。

也就是说 在 4.2 系统中无法从外部启动一个没有 exported 的 Activity。 而通过 PendingIntent 启动 Activity, 启动源为系统,和被启动的应用不是一个 PID。

关于 exported 属性的解释如下:

android:exportedWhether or not the activity can be launched by components of other applications — “true” if it can be, and “false” if not. If “false“, the activity can be launched only by components of the same application or applications with the same user ID.

The default value depends on whether the activity contains intent filters. The absence of any filters means that the activity can be invoked only by specifying its exact class name. This implies that the activity is intended only for application-internal use (since others would not know the class name). So in this case, the default value is “false“. On the other hand, the presence of at least one filter implies that the activity is intended for external use, so the default value is “true“.

This attribute is not the only way to limit an activity’s exposure to other applications. You can also use a permission to limit the external entities that can invoke the activity (see the permission attribute).

详细信息参考:http://developer.android.com/guide/topics/manifest/activity-element.html#exported


Android APK:使用 Android Studio 调试 APK

Android APK:使用 Android Studio 调试 APK

如何解决Android APK:使用 Android Studio 调试 APK?

我正在使用 Android Studio 调试 APK

我在 MainActivity - 我已经反编译了 APK 以提供 .java 文件

public final class MainActivity extends AppCompatActivity {
public final native boolean checkPassword(String str);

/* access modifiers changed from: protected */
@Override // androidx.activity.ComponentActivity,androidx.core.app.ComponentActivity,androidx.appcompat.app.AppCompatActivity,androidx.fragment.app.FragmentActivity
public void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    setContentView(R.layout.activity_main);
    System.loadLibrary("ferriswheel");
}

public final void checkHandler(View view) {
    Intrinsics.checkParameterIsNotNull(view,"view");
    View findViewById = findViewById(R.id.password_input);
    Intrinsics.checkExpressionValueIsNotNull(findViewById,"findViewById<EditText>(R.id.password_input)");
    if (checkPassword(((EditText) findViewById).getText().toString())) {
        startActivity(new Intent(this,ferriswheel.class));
    } else {
        Toast.makeText(this,"Incorrect!",1).show();
    }
}

}

我不确定这里发生了什么 - checkPassword 部分 - 它在检查什么?如果我设置了一个断点,它在我运行应用程序时似乎不会被击中

感谢任何指导

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

android – apk(.apk)和app bundle(.aab)之间的区别

android – apk(.apk)和app bundle(.aab)之间的区别

最近谷歌推出了一个新的功能应用程序包,这是一个非常类似于APK的概念,除了它的灵活性和架构差异.

我已经阅读了很多博客/文章,以了解应用程序包如何在设备中与APK文件进行比较.

从Google Play商店开始,应用套件的实际内部工作流程及其在Android设备上的工作原理是什么?

解决方法:

App Bundles是一种发布格式,而APK(Android应用程序PacKage)是最终将安装在设备上的打包格式.

App Bundles使用bundletool创建一组APK. (.apks)
这可以被提取,并且可以将基础和配置拆分以及潜在的动态特征模块部署到设备.

依赖项看起来像这样:

App Bundle的内容看起来像这样:

有关App Bundles的更多信息,请参见available here.

我们今天的关于Android 8.0+ 更新安装 apk 失败的问题android更新下载的分享就到这里,谢谢您的阅读,如果想了解更多关于(二) Centos7 下 Yum 更新安装 PHP5.5,5.6,7.0、Android 4.2 通知通过 PendingIntent 启动 Activity 失败的问题、Android APK:使用 Android Studio 调试 APK、android – apk(.apk)和app bundle(.aab)之间的区别的相关信息,可以在本站进行搜索。

本文标签: