錯(cuò)誤記錄一:兩個(gè)應(yīng)用間頁(yè)面跳轉(zhuǎn)時(shí)的權(quán)限錯(cuò)誤

今天開發(fā)中遇到個(gè)問題,一個(gè)應(yīng)用中啟動(dòng)另一個(gè)應(yīng)用的頁(yè)面時(shí)出現(xiàn)崩潰,跳轉(zhuǎn)的代碼如下:

private void startLearningActivity(String text){
        Intent intent = new Intent();
        String packageName="com.xxx.xxxx";
        String className="com.xxx.xxxx.XxxActivity";
        ComponentName name = new ComponentName(packageName, className);
        intent.setComponent(name);
        intent.putExtra("Text", text);  
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
 }

錯(cuò)誤log如下:

java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.xxx.xxxxcom.xxx.xxxx.XxxActivity(has extras) } from ProcessRecord{812ad43 4614:com.xxx.xxxxcom/u0a81} (pid=4614, uid=10081) not exported from uid 1000
        at android.os.Parcel.readException(Parcel.java:1599)
        at android.os.Parcel.readException(Parcel.java:1552)
        ......

查找資料后發(fā)現(xiàn)目標(biāo)Activity不支持其他應(yīng)用調(diào)用。解決方法也很簡(jiǎn)單,給要跳轉(zhuǎn)的目標(biāo)Activity添加屬性android:exported="true",該屬性表示支持外部應(yīng)用調(diào)用該頁(yè)面。
AndroidManifest.xml中代碼如下:

    <activity 
            android:name="com.xxx.xxxxcom.XxxActivity"
            android:exported="true">
    </activity>

如此問題就解決了。
還有一種辦法,是在目標(biāo)Activity的聲明里添加一個(gè)action,代碼如下:

 <activity 
     android:name="com.xxx.xxxxcom.XxxActivity">
     <intent-filter >
         <action android:name="android.intent.action.VIEW"/>
     </intent-filter>
 </activity>

同時(shí)啟動(dòng)方法里也添加上該action

private void startLearningActivity(String text){
        Intent intent = new Intent("android.intent.action.VIEW");
        String packageName="com.xxx.xxxx";
        String className="com.xxx.xxxx.XxxActivity";
        ComponentName name = new ComponentName(packageName, className);
        intent.setComponent(name);
        intent.putExtra("Text", text);  
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
 }

如此也能解決問題。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容