【问题标题】:How to start Protected apps activity in Infinix phone programatically?如何以编程方式在 Infinix 手机中启动受保护的应用程序活动?
【发布时间】:2019-03-08 10:46:08
【问题描述】:

我正在尝试以编程方式将我的应用程序作为 Infinix 手机中的受保护应用程序进行检查.. 但这似乎是不可能的,因此我试图启动 XManager >> 设置 >> 受保护应用程序中存在的受保护应用程序活动

我通过这段代码成功打开了XManager

try {
      startActivity(new Intent().setClassName("com.transsion.mobilebutler",
                    "com.transsion.mobilebutler.MainActivity"));

        } catch (Exception e) {
            Log.d("tag", "e " + e.toString());
        }

我不能以编程方式做任何其他事情

当我尝试通过此代码启动设置活动时

 try {
            startActivity(new Intent().setComponent(new ComponentName("com.transsion.mobilebutler",
                    "com.transsion.mobilebutler.SettingsActivity")));

        } catch (Exception ex) {
            Log.d("tag", "ex " + ex.toString());

        }

我得到了这个异常

  java.lang.SecurityException: Permission Denial: starting Intent

我也尝试直接启动受保护的应用程序,但我再次遇到相同的异常

try {
            Intent intent = new Intent();
            intent.setClassName("com.transsion.mobilebutler", 
                    "com.transsion.mobilebutler.applicationmanager.view.activities.MemoryAccelerateWhitelistActivity");
            startActivity(intent);
        } catch (Exception e) {
            Log.d("tag", "e " + e.toString());

更新

此异常的一些答案建议将android:exported="true" 添加到清单 当我添加活动时,我得到了未解决的类错误

    <activity android:name="com.transsion.mobilebutler.SettingsActivity" android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
        </intent-filter>
    </activity>

有什么办法可以解决这个问题吗?

【问题讨论】:

  • 您是否在AndroidManifest.xml 中设置了android:exported="true"?检查此链接:stackoverflow.com/questions/19829507/…
  • 不知道怎么用?因为我没有在清单中声明受保护的应用程序活动,我该怎么做?
  • 请在starting Intent 之后添加整个logcat 好吗?另外,您是否尝试按照建议的方式删除 intent-filter
  • 这里很难发布整个logcat,如果你在解决这个问题之前可以分享你的代码吗?

标签: android android-intent android-activity


【解决方案1】:

你显然不能这样做。您收到“权限被拒绝”异常的原因是您尝试启动的 Activity 未“导出”(即:不能由其所属应用程序以外的应用程序启动)。

您只能启动主设置屏幕。任何应用程序都可以启动它。 “受保护的应用程序”的特定设置屏幕只能由设置应用程序本身启动。

您无需在应用程序中的任何内容上设置android:exported="true",因为未导出您尝试启动的Activity 会引发异常。

【讨论】:

  • 感谢您的回答.. 如果不可能,如何以编程方式将我的应用程序添加到受保护的应用程序?这个问题的最佳解决方案是什么?
  • 您不能以编程方式将您的应用添加到受保护的应用列表中。只有用户可以这样做。您所能做的就是向用户显示一个对话框,向他解释您需要他将您的应用程序添加到受保护的应用程序列表中,您可以提议为他打开设置屏幕。而已。这不是一个好的解决方案,但它是您唯一的选择。除了向制造商付费以在设备上预安装您的应用。
  • 如果有帮助,您应该接受答案。这将从未回答的问题列表中删除该问题。
猜你喜欢
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多